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