Android内存不足,正在更换Galaxy Note 3中的壁纸

Android内存不足,正在更换Galaxy Note 3中的壁纸,android,Android,我的简单代码可以成功地更改android墙纸,但在Galaxy Note 3(4.4.2)中,我遇到了一个OutOfMemoryError,我的应用程序崩溃了 Thread thread4 = new Thread(new Runnable() { @Override public void run() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDe

我的简单代码可以成功地更改android墙纸,但在Galaxy Note 3(4.4.2)中,我遇到了一个
OutOfMemoryError
,我的应用程序崩溃了

Thread thread4 = new Thread(new Runnable() {
    @Override
    public void run() {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        height = metrics.heightPixels;
        width = metrics.widthPixels;
        mBitmap = BitmapFactory.decodeResource(getResources(), mFullSizeIds[position]);
        bitmap = Bitmap.createScaledBitmap(mBitmap, width, height, false);
        wallpaperManager = WallpaperManager.getInstance(SingleViewActivity.this);
        wallpaperManager.setWallpaperOffsetSteps(1, 1);
        wallpaperManager.suggestDesiredDimensions(width, height);
        try {
            wallpaperManager.setBitmap(bitmap);
            HANDLER.post(new Runnable() {

                @Override
                public void run() {
                    Intent intent = new Intent(SingleViewActivity.this, MainActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                    startActivity(intent);
                    Toast.makeText(SingleViewActivity.this, R.string.choose, Toast.LENGTH_SHORT).show();
                    SingleViewActivity.this.finish();
                    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
                }
            });

        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
});
thread4.start();
在其他android版本和其他手机上,我的代码运行良好

日志:

04-12 21:56:26.466: E/dalvikvm-heap(7621): Out of memory on a 36864016-byte allocation.
04-12 21:56:26.476: E/AndroidRuntime(7621): FATAL EXCEPTION: main
04-12 21:56:26.476: E/AndroidRuntime(7621): Process: com.allbaloo.app.cartoony_wallpaper, PID: 7621
04-12 21:56:26.476: E/AndroidRuntime(7621): java.lang.OutOfMemoryError
当没有足够的可用空间时,会出现
OutOfMemory
错误 在进程的堆内存中

因此,原因可能是
内存泄漏、使用了大的可拖动设备等。在出现OOM错误时,应使用
标记:dalvikvm
检查logcat日志。这将提示如何使用堆

最后一个解决方法是通过在清单中声明
android:largeHeap=“true”
来增加进程堆的空间,但这将使GC完成的时间更长,这将导致应用程序中的暂停和缓慢运行

bitmap.recycle();
释放内存

2)尝试使用以下方法降低图像质量:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
final Bitmap bitmap = tmapFactory.decodeFile(mediaFile.getPath(), options);