android 8.1 开机壁纸下半部分黑屏2-3秒的问题解决

vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/ImageWallpaper.java
private void loadWallpaper(boolean needsDraw, boolean needsReset)
上方法的异步改为同步进行测试(目的是将异步改为同步

            private void loadWallpaper(boolean needsDraw, boolean needsReset) {
        mNeedsDrawAfterLoadingWallpaper |= needsDraw;
        if (mLoader != null) {
            if (needsReset) {
                mLoader.cancel(false /* interrupt */);
                mLoader = null;
            } else {
                if (DEBUG) {
                    Log.d(TAG, "Skipping loadWallpaper, already in flight ");
                }
                return;
            }
        }
        /* SUN:jicong.wang remove for ALPS03943376
        mLoader = new AsyncTask() {
            @Override
            protected Bitmap doInBackground(Void... params) {
                Throwable exception;
                try {
                    if (needsReset) {
                        mWallpaperManager.forgetLoadedWallpaper();
                    }
                    return mWallpaperManager.getBitmap();
                } catch (RuntimeException | OutOfMemoryError e) {
                    exception = e;
                }

                if (isCancelled()) {
                    return null;
                }

                if (exception != null) {
                    // Note that if we do fail at this, and the default wallpaper can't
                    // be loaded, we will go into a cycle.  Don't do a build where the
                    // default wallpaper can't be loaded.
                    Log.w(TAG, "Unable to load wallpaper!", exception);
                    try {
                        mWallpaperManager.clear();
                    } catch (IOException ex) {
                        // now we're really screwed.
                        Log.w(TAG, "Unable reset to default wallpaper!", ex);
                    }

                    if (isCancelled()) {
                        return null;
                    }

                    try {
                        return mWallpaperManager.getBitmap();
                    } catch (RuntimeException | OutOfMemoryError e) {
                        Log.w(TAG, "Unable to load default wallpaper!", e);
                    }
                }
                return null;
            }

            @Override
            protected void onPostExecute(Bitmap b) {
                mBackground = null;
                mBackgroundWidth = -1;
                mBackgroundHeight = -1;

                if (b != null) {
                    mBackground = b;
                    mBackgroundWidth = mBackground.getWidth();
                    mBackgroundHeight = mBackground.getHeight();
                }

                if (DEBUG) {
                    Log.d(TAG, "Wallpaper loaded: " + mBackground);
                }
                updateSurfaceSize(getSurfaceHolder(), getDefaultDisplayInfo(),
                        false );
                if (mNeedsDrawAfterLoadingWallpaper) {
                    drawFrame();
                }

                mLoader = null;
                mNeedsDrawAfterLoadingWallpaper = false;
            }
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        */
        /*SUN:jicong.wang add start ALPS03943376 {@*/
        Bitmap  b = null;
        Throwable exception = null;
        try {
            if (needsReset) {
                mWallpaperManager.forgetLoadedWallpaper();
            }
            b =  mWallpaperManager.getBitmap();
        } catch (RuntimeException | OutOfMemoryError e) {
            exception = e;
        }

        if (exception != null) {
            // Note that if we do fail at this, and the default wallpaper can't
            // be loaded, we will go into a cycle.  Don't do a build where the
            // default wallpaper can't be loaded.
            Log.w(TAG, "Unable to load wallpaper!", exception);
            try {
                mWallpaperManager.clear();
            } catch (IOException ex) {
                // now we're really screwed.
                Log.w(TAG, "Unable reset to default wallpaper!", ex);
            }


            try {
                b =  mWallpaperManager.getBitmap();
            } catch (RuntimeException | OutOfMemoryError e) {
                Log.w(TAG, "Unable to load default wallpaper!", e);
            }
        }

        mBackground = null;
        mBackgroundWidth = -1;
        mBackgroundHeight = -1;

        if (b != null) {
            mBackground = b;
            mBackgroundWidth = mBackground.getWidth();
            mBackgroundHeight = mBackground.getHeight();
        }

        if (DEBUG) {
            Log.d(TAG, "Wallpaper loaded: " + mBackground);
        }
        updateSurfaceSize(getSurfaceHolder(), getDefaultDisplayInfo(),
                false );
        if (mNeedsDrawAfterLoadingWallpaper) {
            drawFrame();
        }

        mLoader = null;
        mNeedsDrawAfterLoadingWallpaper = false;    
        /*SUN:jicong.wang add end ALPS03943376 @}*/           
    }

你可能感兴趣的:(Android)