Java Android在存储上回收位图花费的时间太长
我在android游戏中使用了很多位图,一切都很好,但是当我点击一个按钮开始新的活动时,游戏冻结了大约半秒钟。虽然不多,但很烦人。在onDestroy方法中,我循环使用所有位图,以节省内存,这会导致应用程序冻结。有没有更智能的解决方案?在调用onDestroy时,可以尝试在asynctask中回收它们 像这样的Java Android在存储上回收位图花费的时间太长,java,android,bitmap,Java,Android,Bitmap,我在android游戏中使用了很多位图,一切都很好,但是当我点击一个按钮开始新的活动时,游戏冻结了大约半秒钟。虽然不多,但很烦人。在onDestroy方法中,我循环使用所有位图,以节省内存,这会导致应用程序冻结。有没有更智能的解决方案?在调用onDestroy时,可以尝试在asynctask中回收它们 像这样的 @Override protected void onDestroy() { super.onDestroy(); new AsyncTask<Bitmap[],V
@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);
}
@覆盖
受保护的空onDestroy(){
super.ondestory();
新建异步任务(){
@凌驾
受保护的Void doInBackground(位图[]…参数){
用于(位图b:参数[0]){
b、 回收();
}
返回null;
}
}.执行(位图);
}
你能告诉我更多细节吗?AsyncTask
可以在后台运行,即使在调用它的活动
被销毁之后。由于AsyncTask
在后台运行,ondestory()
将不会被阻止,新的活动
将更快地启动。