4

わかりましたので、ニュースを含む Android アプリを開発しています。ユーザーが初めてアプリを実行すると、別のスレッドが実行され、無限の while( true ) ループが開始されます。ループ内で、コネクタがインターネットから通知にテキストをダウンロードし、この通知を送信してから、8 時間スリープします。上記のような方法でスレッドを実行するか、アラーム マネージャを使用して、最適に動作させるにはどちらの方法が適していますか? または、別のより良い方法があるのでしょうか。

今のところ、テストのために2つの方法を実行しましたが、どちらもうまく機能しますが、どちらがより効率的であるか、Androidによって殺されないか、リソースの消費が少ないかなどを確認する方法がわかりません.

2 つ目の質問ですが、誰かがアプリを強制終了したときにループを復元する方法はありますか? Advanced Task Killer Free とアプリ Flashy (Flash Player Loader) でテストしていました。私は Flashy を殺しましたが、5 秒後にアプリが再び実行されたので、おそらく可能ですが、どうすればよいでしょうか?

そして、私がうっとうしい広告を開発していると思っている人のために、いいえ、私が開発しているアプリはインターネットからニュースを読むだけです。

誰かが助けてくれることを願っています、よろしくお願いします。

4

2 に答える 2

7

スレッドとアラームマネージャー

アラームマネージャー

Androidのドキュメントによると

Alarm Manager は、アプリケーションが現在実行されていない場合でも、特定の時間にアプリケーション コードを実行したい場合を対象としています。

したがって、ここで得られる利点は、アプリケーションが実行状態になくても、将来特定のタスクを実行できることです (ここでは、タスクを完了するために Android メモリに常駐していないため、誇らしげに自分を良き Android 市民と呼ぶことができます)。このタスクを特定の時間に実行したいことを Android に伝えるだけで、Android は、アプリケーションが実行されていなくても、その特定の時間に自動的にアプリケーションを起動します。

スレッドで同じことを達成したい場合は、タスクの実行が開始されないまでスレッドが生きている必要があります. .

これで疑問が解消されることを願っています。

于 2013-09-26T19:20:41.097 に答える
1

あなたの場合、私は間違いなくアラームマネージャーを使用します。一般的な経験則として、アプリケーションが「スリープ」し、定期的に長い間隔 (8 時間は長い時間) で新しいコンテンツをチェックする場合は、アラーム マネージャーを使用する必要があります。

この方法では、アプリをバックグラウンドで実行する必要がないため、バッテリー寿命が節約され、アプリケーションの機能は、メモリ不足の場合に Android がサービスを強制終了しても影響を受けません。

2 番目の質問について - メモリ不足のために Android システムがサービスを強制終了した場合、できるだけ早くサービスを再起動します。ただし、サービスを手動で強制終了した場合は、ハッキングによって可能であっても再起動しないでください。

于 2013-09-26T19:19:39.737 に答える