アプリケーションを開発していますが、テスト中に問題が発生しました。主なアクティビティは、データベース レコードを表示します。システム メモリが少なくなると (ホーム ボタンを押して多くのアプリを起動すると)、ガベージ コレクターがデータベース レコードを削除し、アプリに戻ると、アクティビティに何も表示されず (レコードなし)、アプリが強制的に実行されます。アクション (戻る、ホーム、タッチなど) で閉じます。
問題を解決するためのアイデアはありますか?
アプリケーションを開発していますが、テスト中に問題が発生しました。主なアクティビティは、データベース レコードを表示します。システム メモリが少なくなると (ホーム ボタンを押して多くのアプリを起動すると)、ガベージ コレクターがデータベース レコードを削除し、アプリに戻ると、アクティビティに何も表示されず (レコードなし)、アプリが強制的に実行されます。アクション (戻る、ホーム、タッチなど) で閉じます。
問題を解決するためのアイデアはありますか?
マニフェスト ファイル内
<application name=".MainAppActivity" >
.
.
.
</application>
MainActivity で
public class MainAppActivity extends Application {
.
.
.
.
@Override
public void onLowMemory(){
System.gc();
}
}
たとえば、レコード配列が空またはnullの場合は、onResumeでチェックを行うことができます。それらをリロードする(おそらくサービスでリロードする)か、最初にそれらをロードしてonPause()
後でファイルを保存するときにファイルに保存することもできますでonResume()
このファイルをロードできます。
いずれにせよ、アプリがメモリを使いすぎていると思われる場合は、System.gc()
ガベージのクリーンアップを試みることができますが、ユーザーが他のアプリを起動してメモリをいっぱいにする場合、このオプションは役に立たない可能性があります。
問題が解決しました。システム メモリが極端に少なくなったときに発生し (アプリケーションをテストするために他の 10 個のアプリケーションを起動しました)、データベース クラスでシングルトン パターンを使用して解決しました。