【发布时间】:2025-12-12 05:35:01
【问题描述】:
我在我的安卓游戏中使用了很多位图,一切都很好,但是当我点击一个按钮开始新的活动时,游戏冻结了大约半秒钟。不是很多,但很烦人。在 onDestroy 方法中,我回收所有位图,以节省内存,这会导致应用程序冻结。有没有更聪明的解决方案?
【问题讨论】:
我在我的安卓游戏中使用了很多位图,一切都很好,但是当我点击一个按钮开始新的活动时,游戏冻结了大约半秒钟。不是很多,但很烦人。在 onDestroy 方法中,我回收所有位图,以节省内存,这会导致应用程序冻结。有没有更聪明的解决方案?
【问题讨论】:
也许在调用 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会更快启动。