0

ユーザーによって呼び出されるか、アラームによってスケジュールされた、長時間実行されるタスクを実行するAndroidアプリを開発しています。

Activity - > Service - > AsyncTask 形式の呼び出しで設計しました。

Otto ライブラリを使用して、UI の更新を AsyncTask からアクティビティに直接もたらします。

2 つの質問があります
。1 Otto を使用して AsyncTask -> Service から、次に Service -> Activity からの通信を行う必要がある理由はありますか。多くのアプリがこのパターンを使用しているのを見てきました。

2 サービスをフォアグラウンドで実行する必要があるのはいつですか? メモリ不足によって強制終了されないという議論は悪用される可能性があります。意識的に決めたい。アラームによってキックされたときではなく、ユーザーが手動で呼び出したときにフォアグラウンドで実行する必要があると思います。

4

1 に答える 1

1

Otto ライブラリを使用して、UI の更新を AsyncTask からアクティビティに直接もたらします。

イベント バスはイベントを順番に配信する場合と配信しない場合があることに注意してください (前/後)。また、Otto を使用すると、別のスレッドからメイン スレッドにイベントを投稿できます。したがって、AsyncTask を単純な実行可能ファイルに置き換えることができます。

1 Otto を使用して AsyncTask -> Service から、次に Service -> Activity からの通信を行う必要がある理由はありますか? 多くのアプリがこのパターンを使用しているのを見てきました。

一部のクライアント --> サービス --> エグゼキュータ キュー --> モデル/データの変更 --> Otto イベントのブロードキャスト --> 関心のあるクライアントは、モデル/データからビューを更新します。

2 サービスをフォアグラウンドで実行する必要があるのはいつですか? メモリ不足によって強制終了されないという議論は悪用される可能性があります。意識的に決めたい。アラームによってキックされたときではなく、ユーザーが手動で呼び出したときにフォアグラウンドで実行する必要があると思います。

サービスは再起動後も存続できる必要があります。起動時 キュー内の保留中のタスクをチェックし、それらを再開します。保留中のタスクがない場合はシャットダウンする必要があります。新しいタスクが投稿されたときに開始する必要があります。

于 2014-03-10T14:37:08.990 に答える