阅读更多

前两款android智能机开发过程中曾经遇到过在launcher主屏界面上建一个应用快捷图标,在横屏的状态下点击打开此应用,然后按返回键,很大概率上屏幕会刷新失败,显示半屏黑屏,是由于关闭当前activity时是横屏状态,关闭后返回到壁纸界面是竖屏,windowManagerService刷新处理问题。现将解决方案贴出来,望以后遇到此问题的同学借鉴:

 

            boolean gone = win.mViewVisibility == View.GONE
                    || !win.mRelayoutCalled
                    || win.mRootToken.hidden
                    || (atoken != null && atoken.hiddenRequested)
                    || win.mAttachedHidden
                    || win.mExiting || win.mDestroying;

            if (!win.mLayoutAttached) {
                if (DEBUG_LAYOUT) Slog.v(TAG, "First pass " + win
                        + ": gone=" + gone + " mHaveFrame=" + win.mHaveFrame
                        + " mLayoutAttached=" + win.mLayoutAttached);
                if (DEBUG_LAYOUT && gone) Slog.v(TAG, "  (mViewVisibility="
                        + win.mViewVisibility + " mRelayoutCalled="
                        + win.mRelayoutCalled + " hidden="
                        + win.mRootToken.hidden + " hiddenRequested="
                        + (atoken != null && atoken.hiddenRequested)
                        + " mAttachedHidden=" + win.mAttachedHidden);
            }

            if (win.mIsWallpaper)
            {
                gone = win.mViewVisibility == View.GONE
                        || !win.mRelayoutCalled
                        || (atoken != null && atoken.hiddenRequested)
                        || win.mAttachedHidden
                        || win.mExiting || win.mDestroying;
            }
           
            // If this view is GONE, then skip it -- keep the current
            // frame, and let the caller know so they can ignore it
            // if they want.  (We do the normal layout for INVISIBLE
            // windows, since that means "perform layout as normal,
            // just don't display").
            if (!gone || !win.mHaveFrame) {
                if (!win.mLayoutAttached) {
                    mPolicy.layoutWindowLw(win, win.mAttrs, null);
                    win.mLayoutSeq = seq;
                    if (DEBUG_LAYOUT) Slog.v(TAG, "-> mFrame="
                            + win.mFrame + " mContainingFrame="
                            + win.mContainingFrame + " mDisplayFrame="
                            + win.mDisplayFrame);
                } else {
                    if (topAttached < 0) topAttached = i;
                }
            }

更多相关文章

  1. Android(安卓)N 多窗口的设计
  2. 设置Android(安卓)Studio启动时打开欢迎界面(选择最近打开过的工
  3. Android(安卓)UI常用实例 如何实现欢迎界面(Splash Screen)
  4. Android(安卓)- 下拉刷新
  5. Android仿人人客户端(v5.7.1)——应用主界面之左侧面板UI实现
  6. Android(安卓)用户界面---样式和主题(Styles and Themes)(一)
  7. Android中的Handler使用总结
  8. Android---Activity初探
  9. 使用Android辅助服务AccessibilityService实现的微信自动抢红包

随机推荐

  1. (4.1.12)Android高效加载大图、多图解决
  2. Android之SDK、NDK、JNI和so文件
  3. 解析Android消息处理机制:Handler/Thread/
  4. android
  5. Toolbar上overflow的样式自定义详解
  6. android中自动提示、补全、连接的功能实
  7. Android进阶(十九)AndroidAPP开发问题汇
  8. ros安装android
  9. Android(安卓)Duplicate files copied in
  10. 5 个顶级 Android(安卓)开源库