12

ユーザーがアプリをシャットダウンしたときにデータベースを消去する必要があるため、アプリがいつ閉じられたかを知りたいのですが、ユーザーがアプリを閉じた瞬間にSQLiteデータベースを消去するのに適切なタイミングですが、これを検出するにはどうすればよいですか?

4

2 に答える 2

21

これは欠陥のある設計アイデアであり、システムの誤解を反映しています。プロセス全体が停止すると、プロセスは停止します。つまり、コードは実行されなくなります。

追跡を行い、最後のonDestory()のアクティビティでクリーンアップを実行することができますが、それが常に実際に行われるとは限りません(メソッドが常に呼び出されるとは限りません)。古いコピーが問題になる場合は、次回の実行時にクリーンアップしてください。

そうは言っても、ndkを使用してプロセス終了シグナルのハンドラーを提供することはできますが、それでもすべての場合に機能することを期待しているわけではありません。これからサウンド機能を得る可能性は限られているので、関連する概念に既に精通していない限り、おそらく努力を正当化することはできません。

また、アプリの実行中にファイルが存在し、アプリが予期しない方法で終了した場合でもファイルが残るため、セキュリティメカニズムのクリーンアップを少し間違えないでください。

于 2012-04-30T17:58:20.967 に答える
9

あなたがあなたの主な活動ではないと仮定すると、その活動のメソッドfinish()内のデータベースをクリアするonDestroy()ことはあなたが達成したいことに最も近いかもしれません。コメントで指摘されているように、http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycleを参照してください

于 2012-04-30T17:57:17.997 に答える