3

一時停止時にある程度のデータを保存したいActivity。私はContentProviderSQLiteデータベースに裏打ちされた自分自身を使用しています。

たとえば、実際の節約を実行するメソッドは次のようになります。

public void saveData() {
    //perform operations over ContentProvider in current thread
}

質問はonPause:(新しいスレッドを使用して)このメソッドを呼び出すだけで安全ですか?

public void onPause() {
    super.onPause();

    new Thread(new Runnable() {

        public void run() {
            saveData();
        }
    }).start();
}

Serviceまたは、この作業をバックグラウンドで完了する新しいものを開始する必要がありますか?または、データが確実に保存されるようにするためのさらに信頼性の高い方法がありますか?

4

2 に答える 2

1

バインドされたバックグラウンドサービスを使用してみてください(コンテンツプロバイダーを1つラップすることをお勧めします)。これにより、アクティビティの状態に依存せず、いつでもプロバイダーサービスにget/saveリクエストを送信できます。

于 2013-02-25T14:00:51.757 に答える
0

安全ですが、この目的で onPause() を使用しないことをお勧めします。呼び出し回数が多すぎます (アクティビティ ライフサイクルのドキュメントを参照してください)。それを onStop() に移動します。

于 2013-02-25T13:44:50.730 に答える