【问题标题】:Android taking too long to recycle bitmaps onDestroyAndroid 花费太长时间来回收位图 onDestroy
【发布时间】:2025-12-12 05:35:01
【问题描述】:

我在我的安卓游戏中使用了很多位图,一切都很好,但是当我点击一个按钮开始新的活动时,游戏冻结了大约半秒钟。不是很多,但很烦人。在 onDestroy 方法中,我回收所有位图,以节省内存,这会导致应用程序冻结。有没有更聪明的解决方案?

【问题讨论】:

    标签: java android bitmap


    【解决方案1】:

    也许在调用 onDestroy 时尝试在异步任务中回收它们

    类似的东西

    @Override
    protected void onDestroy() {
        super.onDestroy();
        new AsyncTask<Bitmap[],Void,Void>() {
    
            @Override
            protected Void doInBackground(Bitmap[]... params) {
                for (Bitmap b : params[0]) {
                    b.recycle();
                }
                return null;
            }
        }.execute(bitmaps);
    }
    

    【讨论】:

    • 你能给我更多的细节吗?
    • AsyncTask 可以在后台运行,即使调用它的 Activity 被销毁。因为AsyncTask在后台运行,onDestroy()不会阻塞,新的Activity会更快启动。