私には、ActivityAとActivityBの2つのアクティビティがあります。
ActivityA.javaで
startActivity(new Intent(this, ActivityB.class));
finish();
ActivityB.javaで
public void onResume() {
super.onResume();
anim1 = new TranslateAnimation(0, 0, fromYDelta, -height);
anim1.setDuration(8000);
anim1.setFillAfter(true);
anim1.setStartOffset(0);
aView.startAnimation(anim1);
}
ActivityBを開始してそれ自体を終了するActivityAのコードが実行された後、アクティビティライフサイクルコールバックが次の順序で呼び出されました。
ActivityA.onPause();
ActivityB.onStart();
ActivityB.onResume(); //Start 8 seconds animation here
ActivityA.onStop();
ActivityA.onDestroy();
ここで問題となるのは、ActivityBのonResume()で8秒間のアニメーションが開始されたため、ActivityB.onResume()が呼び出されてから8秒後にActivityA.onStop()が呼び出されたことです。ActivityA.onDestroy()が非常に遅く呼び出され、システムがActivityAのすべてのリソースを長期間保持する必要があったため、アプリでOutOfMemoryErrorが発生しました。
助言がありますか?ありがとう!