0

Android のバックグラウンド プロセスに関する記事をいくつか読みました。しかし、バックグラウンド操作に 30 秒以上かかる状況があります。例:

  • 活動を開始
  • ボタンをクリック
  • ランナブルを作成し、サーバーを呼び出してデータを
    30 秒間取得します (メッセージをお待ちください)
  • 完了したら、メッセージをハンドラーに送信します
  • 画面の向きは 30 秒の途中で発生します...

アクティビティが破棄されて再作成されることはわかっています (スレッド内のスレッドも破棄されます (メモリ リークの可能性があるため、静的にする、ハンドラーにする)。
したがって、実行可能ファイルを作成し、サーバーを再度呼び出す必要があります....

私はインテントサービスについて読みましたが、インテントサービスのライフサイクルはアプリケーションのライフサイクルと同じであることを理解しているので、これを使用する必要があると思いますか?

downloading/parsing/insertingこの 30 秒間のdb(トランザクション)の間の画面の向きを処理するためのベスト プラクティスは何ですか? -> onConfigurationChanged() メソッドを使用したくありません。

この種の問題に対するあなたの解決策は何ですか?

ありがとうございます。

4

3 に答える 3

1

バックグラウンド操作をアクティビティに関連付けるのではなく、アプリケーション オブジェクトを実装することをお勧めします。特定のアプリに関連付けられたアプリケーション オブジェクトのみが存在し、アクティビティ オブジェクトの前に作成され、アプリの有効期間中に作成/破棄されるアクティビティ オブジェクトとは無関係です。すべてのアクティビティ オブジェクトを自分のアプリケーション オブジェクトに登録するアプリがあります。同様のことを行う場合、構成の変更により特定のアクティビティが破棄されて再作成されても問題ありません。

于 2013-05-26T12:27:04.987 に答える
0

JobScheduler (minSdkVersion=21+) は、実行可能なサービスまたはインテント サービスの強力な代替手段です。再試行ロジックが組み込まれており、Android O のサービスに対するバックグラウンド制限の影響を受けません。

于 2017-10-21T06:51:00.183 に答える