特定のメソッドdoThis()
(CPU集約アクションではなく、WebサーバーへのPOSTのみ)を10分ごとに実行し、そのメソッドが実行を終了すると、ユーザーに通知します(Toast
またはNotification
または何か並べ替えの)。しかし、私はユーザーがまだUIと対話していることを期待しているので、UIスレッドをブロックしたくありません。これを行う最も効率的な方法は何ですか? Handler
?またはService
または何らかの並べ替え(つまり、IntentService
)?設定した間隔でメソッドを実行する最も効率的な方法は?
答えて
IMOは、ScheduledThreadPoolExecutorを使用しています。私の答えはhereで、このヘルプを参考にしてください。
タイムドタスクを実行する必要があると述べたので、タイマークラスをお勧めします。あなたがあなたの活動はあなたがバックグラウンドで実行するサービスにそれを置くことができ、他の活動自体に同じのためタイマークラスを使用することができます 実行中にこのアクションを実行する必要がある場合には ...
は、この参照してくださいリンク。 :AsyncTaskについてhttp://developer.android.com/resources/articles/timed-ui-updates.html
私はタイマーの提案に反対しています。私はこれらの人たち、特に例外処理に関しては何の問題もありませんでした。タイマーはちょうどそれらをあなたの天気予報を残すそれらを飲み込むかどうか働いたかどうか。 –
あなたが何を経験したのか、それが完璧に機能している日まで私は残念です。 – Abhinava
どのように?
doInBackground
方法を使用すると、UIスレッドと相互に作用することなく、特定の間隔でバックグラウンドで特定のメソッドを実行するのに役立ちます。
onPostExecute
あなたは、私がAsyncTask
経由でこれを行うToast
を使用してユーザーに通知するのに役立ちます。
doInBackground(String... params){ while (running){ doThis(); Thread.sleep(10 * 1000); } }
私は私のアプリは、これらの更新プログラム(GETおよびPOSTを)より頻繁に(すべての5-10秒)を実行し、表示されることを追加したい:doInBackground()
方法は、このような何か(単に擬似コード)を探しますユーザーに新しい価値をもたらします。そのため、私はアクティビティを使用します。代わりにサービスからAsyncTaskを起動することができます。私はそのパスダウンされていないが -
あなたが持っている他のオプションは、AlarmManager
を使用することです。
ユーザーがアプリケーションを切り替えるとAsyncTaskがバックグラウンドで実行されますか? –
はい、これが起こらないようにするための措置を講じない限り、それはなります。私の場合は、アクティビティからAsyncTaskを開始します。 'onPause()'では、(カスタムロジックを使って)タスクを「一時停止」します。 'Service'からタスクを開始した場合、そのタスクをバックグラウンドで継続させることができます。 – curioustechizen
- 1. 指定された時間間隔でページを取り込む最も効率的な方法は?
- 2. &&を実行する最も効率的な方法?
- 3. 時間(または時間範囲)を設定する最も効率的な方法は何ですか?
- 4. 2時間間隔で平均を計算する最も効率的な方法は何ですか
- 5. 設定可能なスケジュールでタスクを実行する最も効率的な方法
- 6. Rubyでループを実装する最もスマートで最も効率的な方法
- 7. BlackListを実装する最も効率的な方法
- 8. プリエンプティブ待ち行列を実装する最も効率的な方法は?
- 9. Eigen行列をループする最も効率的な方法
- 10. 最も効率的な方法
- 11. 最も効率的な方法のハンドラ
- 12. MySQLでフルテキスト検索を行う最も効率的な方法
- 13. iPhoneアプリの設定を保存する最も効率的な代替方法
- 14. VimのDjango設定ファイルを編集する最も効率的な方法
- 15. このPHPスクリプトを実行する最も効率的な方法
- 16. GCDでファイルをコピーする最も効率的な方法は?
- 17. 最も効率的な方法は、SQLの行
- 18. 指定された時間間隔でメソッドを実行する
- 19. android.net.wifi.ScanResultをComparableにする最も効率的な方法は?
- 20. データのハッシュをフォーマットする最も効率的な方法は?
- 21. JSONをC#で解析する最も効率的な方法
- 22. ウェブサイト上でコンテンツをスケジュールする最も効率的な方法
- 23. タイムスタンプでデータを取得する最も効率的な方法
- 24. LIMITの最も効率的な方法はJOINですか?
- 25. このSELECTとORDER BYのクエリは、私が実行した最も効率的な方法ですか?
- 26. jQueryリンクを作る最も効率的な方法は?
- 27. Cでキューからデキューする最も効率的な方法#
- 28. 最も効率的なマルチレベルコメントシステム
- 29. 最も効率的なバブルソートメカニズム
- 30. ウェイポイントを節約し比較を行う最も効率的な方法は?
"shutdown()"を呼び出した後。同じScheduledThreadPoolExecutorバックアップを開始することを選択した場合、許可されますか?またはインスタンスを作成する必要がありますか? –
ユーザーがアプリケーションを変更した場合、Executorはバックグラウンドで実行されますか? –
@MohitDeshpande、良い質問、shutdown()を呼び出した後、もう一度使いたい場合は、新しいものを初期化する必要があります。それ以外の場合は、新しいタスクをサブミットしようとしたときにRejectedExecutionExceptionを取得します。あなたの2番目の質問については、私はそう思うが100%確実ではない、あなた自身を試してみるのが良い。 – yorkw