3

アプリケーションを開発していますが、テスト中に問題が発生しました。主なアクティビティは、データベース レコードを表示します。システム メモリが少なくなると (ホーム ボタンを押して多くのアプリを起動すると)、ガベージ コレクターがデータベース レコードを削除し、アプリに戻ると、アクティビティに何も表示されず (レコードなし)、アプリが強制的に実行されます。アクション (戻る、ホーム、タッチなど) で閉じます。

問題を解決するためのアイデアはありますか?

4

3 に答える 3

2

マニフェスト ファイル内

<application name=".MainAppActivity" >
   .
   .
   .
</application>

MainActivity で

public class MainAppActivity extends Application {
   .
   .
   .
   .
   @Override
   public void onLowMemory(){
      System.gc();
   }
}
于 2012-10-14T15:37:04.400 に答える
0

たとえば、レコード配列が空またはnullの場合は、onResumeでチェックを行うことができます。それらをリロードする(おそらくサービスでリロードする)か、最初にそれらをロードしてonPause()後でファイルを保存するときにファイルに保存することもできますでonResume()このファイルをロードできます。

いずれにせよ、アプリがメモリを使いすぎていると思われる場合は、System.gc()ガベージのクリーンアップを試みることができますが、ユーザーが他のアプリを起動してメモリをいっぱいにする場合、このオプションは役に立たない可能性があります。

于 2012-10-14T14:44:54.410 に答える
0

問題が解決しました。システム メモリが極端に少なくなったときに発生し (アプリケーションをテストするために他の 10 個のアプリケーションを起動しました)、データベース クラスでシングルトン パターンを使用して解決しました。

于 2012-10-23T08:56:56.643 に答える