私は学校用のAndroidアプリを作っています。アクティビティを再作成せずに再利用
第1アクティビティはです。学生は、ViewPagerを含み、3つのフラグメントで構成されています。このアクティビティには、3つのフラグメントが含まれているため、読み込みにコストがかかります。
第一断片は、(テストのタイトルだけが含まれているリストビュー)テストのリストビューが含まれている漫画
第三断片のリストビューが含まれているゲームのリストビュー
第二フラグメントが含まれています。 テストフラグメントのonClickで今
(リストビューに表示される)テストの上に新しいShowTestアクティビティ完全なテストを示している開放されています。
すべてうまく動作します。
ShowTest活動
test.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent it = new Intent(getActivity(), ShowTest.class);
startActivity(it);
}
});
そしてShowTest活動で、私はちょうど(仕上げを呼んでいる)を開始するTestFragmentのコードです。
public void onBackPressed() {
this.finish();
}
しかしonBackpressed ShowTest(中)は、(断片内のすべてのものはリロード)学生活動の再作成と呼ばれています。私はこの活動が2回目に作られることを望んでいません。それは負荷として高価です。
これらの2つのリンクがあなたの助けが理解されるであろう
Open Info Activity without closing Main Activity
Android - Relaunching an activity without having to re-create it
私を助けてくれませんでした。あなたが他の活動の開始にfinish()
を呼ぶかもしれない
これは、アクティビティの開始方法とコードの関連部分がどこにあるかによって異なります。たとえば、アクティビティを終了して次のアクティビティに移動し、そのアクティビティを最初のアクティビティに戻すと、アクティビティが再作成されます。終了しない場合、通常、アクティビティはバックグラウンドにとどまります。それで、すべてのコードがどこにあるかは重要です。たとえば、onResume()のすべてを初期化すると、すべてが再び実行されます。あなたは間違いなくアクティビティライフサイクルを読む必要があります:https://developer.android.com/guide/components/activities/activity-lifecycle.html – Opiatefuchs
これを保証する方法はありません。 Androidでメモリの問題が検出された場合、フォアグラウンドにないアクティビティは閉じられ、必要に応じて後で再作成されます。その動作をオーバーライドする方法はありません(実際には、唯一の選択肢はテストのために常にオンにすることです)。 –
ShowTestActivity、onBackPressed()メソッドおよびその他の関連するコードを開始するために使用するコードを投稿します。 –