Timerのように一定時間後に非同期タスクを繰り返し実行する方法その目的私はいくつかの固定された時間間隔後にサーバーからの更新を確認する必要があります....私は簡単にタイマーを介して行うことができますが、私はアンドロイドアプリケーションのためのより効率的だと思う非同期タスクを使用したいと思います。一定の時間間隔をおいて非同期タスクを繰り返し実行する方法
答えて
public void callAsynchronousTask() {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
PerformBackgroundTask performBackgroundTask = new PerformBackgroundTask();
// PerformBackgroundTask this class is the class that extends AsynchTask
performBackgroundTask.execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 50000); //execute in every 50000 ms
}
することはできだけハンドラ:
private int m_interval = 5000; // 5 seconds by default, can be changed later
private Handle m_handler;
@Override
protected void onCreate(Bundle bundle)
{
...
m_handler = new Handler();
}
Runnable m_statusChecker = new Runnable()
{
@Override
public void run() {
updateStatus(); //this function can change value of m_interval.
m_handler.postDelayed(m_statusChecker, m_interval);
}
}
void startRepeatingTask()
{
m_statusChecker.run();
}
void stopRepeatingTask()
{
m_handler.removeCallback(m_statusChecker);
}
しかし、私はこのフレームワークを確認するためにあなたをお勧めしますが:http://code.google.com/intl/de-DE/android/c2dm/は異なるアプローチです:何かが準備ができたときに、サーバーは、いくつかの帯域幅を節約、これ(電話を通知し、パフォーマンス:))
おかげalot.Actually私はちょうどapplication.Server側のクライアント側はすでにiphone用に開発され、同じアプリケーションのために働いている開発していると私は、Android – Waseem
に同じサーバーを使用する必要があり、私はスレッドへの新たなんですアンドロイドでハンドラにrunnableをどこに渡していますか? @DheeBに答えるには –
、答えはここでは言及しませんが、このようなインスタンス化中でなければなりませんm_handler = new Handler(m_statusChecker);しかし、このハンドラ/実行可能ファイルはまだ実行中ですが、ネットワークオペレーションが "サーバから最新の未読グリーティングをすべて自動的にダウンロード"することを明示しているため、この解決策が機能しないもう一つの理由があります。まだブロックしているUIスレッドで手動で別のスレッドで起動する必要があります。 – tony9099
//Every 10000 ms
private void doSomethingRepeatedly() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
try{
new SendToServer().execute();
}
catch (Exception e) {
// TODO: handle exception
}
}
}, 0, 10000);
}
アンドロイドのドキュメントhttps://developer.android.com/reference/java/util/Timer.htmlのすべての新しいコードについては、Timer上でScheduledThreadPoolExecutorを使用することをお勧めします –
- 1. 一定の間隔で非同期タスクを実行する
- 2. 特定の時間間隔で繰り返されるタスク?
- 3. Python:条件が真である限り、一定の時間間隔で繰り返し実行する
- 4. ThreadPoolSchedulerの間隔がタスクの実行時間より短い
- 5. Android:短い時間間隔の繰り返しタスクのスケジュール設定は機能していません
- 6. SQL SELECT特定の時間間隔のテーブルの行を繰り返す
- 7. 間隔を指定して非同期要求を実行するカームウェイ?
- 8. 一定の時間間隔の後、一定の時間間隔の間に実行するスケジューラタスクを設定する方法
- 9. Jmeter-Thread-一定の時間間隔でユーザーのセットを実行する方法
- 10. 時間間隔で機能を繰り返しますか?
- 11. 非常に長い定期的な間隔でタスクを実行するようスケジュールする方法
- 12. sympyセット:一定間隔で繰り返します。
- 13. スクリプトを使用して複数のコマンドを一定間隔で繰り返し実行する
- 14. 設定された時間に関数を繰り返します。間隔
- 15. C#データを繰り返し、一定の時間間隔で要素を挿入する
- 16. x時間(分と時間)でタスクを実行する方法
- 17. Elixirで長時間実行されているタスクを非同期に実行する
- 18. これは、長時間実行される非同期タスクを実行する正しいアプローチですか?
- 19. 固定間隔の後、一定の時間間隔でのみラクマータイマーを実行するには
- 20. 間隔と非同期でHTTPリクエストを送信する方法
- 21. Javaデスクトップ/ Webアプリケーションで、タスクを1週間または2週間の間隔で繰り返し実行するようにスケジュールする方法
- 22. 非同期に実行されるタスクの一時停止と再開方法
- 23. 非同期コードスニペットの実行時間の測定
- 24. 一定の時間間隔の後に「timeupdate」のアクションを実行します
- 25. ジョブスケジューラを使用して特定の時間に、次に特定の間隔でジョブを繰り返す
- 26. 一定の時間間隔の後にタスクを実行するためのベストプラクティスは何ですか?
- 27. 複数の間隔でMySQLクエリを繰り返す方法
- 28. C#多くの非同期タスクを同時に実行する
- 29. Hiredis非同期コンテキストのTCPキープアライブ間隔を設定する
- 30. C++で一定の時間間隔でメソッドを実行するWindowsサービス
多くのおかげで.... – Waseem
とにかく、非同期タスクは、独自のスレッドで実行されます。なぜそれをハンドラで実行するのですか? – Siddharth
はい、非同期タスクは別のスレッドで実行されますが、UIスレッド以外のスレッドからは開始できません。ハンドラは、それを可能にするためにそこにあります。 – r1k0