0

アクティビティからクラスを呼び出しています。私が呼び出しているクラスは、Service または Activity を拡張しません。BufferedReader オブジェクトを処理するために使用しているのは単なるワーカー クラスです。BufferedReader の処理中にアプリがフォーカスを失った場合、乱雑なデータが残る可能性があることを懸念しています。では、Activity がクラスを呼び出してデータベース エントリを実行し、Activity がフォーカスを失った場合はどうなるでしょうか。OnPause メソッドと OnResume メソッドにアクセスできるように、ワーカー クラスを Service にすることを考えています。私が何をすべきかわからない。他の誰かがこれについての手がかりを持っていますか。

4

2 に答える 2

1

Android Activity Lifecycleを活用する必要があります。

class MyActivity extends Activity {
    private MyWorkerClass myWorkerClass;

    void onCreate() {
      myWorkerClass = new MyWorkerClass();
      myWorkerClass.startLoading();
    }

    void onPause() {
      // You know the activity is going into the background
      // so act appropriately in your worker class
      myWorkerClass.stopLoading();
    }
}

上記の問題は非常に一般的なものであるため、特定の実装を説明しても役に立ちません。

アクティビティが onPause に入った場合でもワーカー クラスに作業を完了させたい場合は、別のスレッドで、場合によってはサービスで作業を行う必要があります。ただし、適切なオブジェクト指向と SRP への準拠のために、ワーカー クラスを使用することはできます。

于 2013-07-06T14:09:38.077 に答える
0

単純な 1 回限りのタスクの場合は を作成でき、継続的なタスクの場合はクラスIntentServiceを拡張できます。Serviceもご覧くださいAsyncTaskLoader

アプリ プロセスが終了している場合は、IO メディアを一貫性のない状態や破損したデータのままにしないようにする必要があります。したがって、データベースの場合はトランザクションを使用し、ファイル IO の場合は一時ファイルに書き込み、最後に置換し、リモート IO の場合は確認要求を使用します。

于 2013-07-06T14:28:21.343 に答える