web-dev-qa-db-ja.com

Android通常のタスク(cronjobと同等)

この質問が(別のユーザーによって)最後に行われたときの回答は次のとおりです。

これが実行中のアクティビティにある場合は、Timer/TimerTaskとHandlerを使用するか、postDelayed()とAsyncTaskを使用できます。

ここで: Android Repetitive Task

私はまだAndroidをプログラムする方法を学んでいます。私はスレッドを含む私が知っているスキルを経験し、私のコードで多くの問題を抱えていました。誰でも使用方法の例を挙げられますか:time/timertaskとhandler OR postDelayed()とAsyncTask。

前もって感謝します :)

14
Dech

私はこれが役立つかもしれないと感じています: http://www.tutorialforandroid.com/2009/01/using-handler-in-Android.html

4
MrSok

あなたがAlarmManagerを使わなければならないCronのようなタスクのために、これはあなたが呼ぶ必要があるあなたのコードでそれを使うためのシステムサービスです:

AlarmManager myAlarmManager = Context.getSystemService(Context.ALARM_SERVICE).

AlarmManagerに関する完全なドキュメント ここ。

22
Lucas S.

最も適切なアプローチは、サービスを介することです。 Androidに含まれているストックメールアプリのソースコードを見て、サービスの書き方を学びました。

一般的な考え方は、 Service クラスをオーバーライドし、 alarms を設定してサービスをアクティブ化することです。デーモンやWindowsサービスとは異なり、Androidサービスは常に実行されているわけではありません-サービスは起動し(通常はアラームによってアクティブ化された場合)、作業を実行してからシャットダウンします。場合によっては、 部分的なウェイクロック を取得して、タスクが完了するまでサービスを続行します-そうしないと、Androidがサービスを途中で強制終了する可能性があります。

5
Melllvar

Cronjobランナーを構築したい場合、必要なのは Service :です。

サービスは、バックグラウンドで長時間実行される操作を実行できるアプリケーションコンポーネントであり、ユーザーインターフェイスを提供しません。別のアプリケーションコンポーネントがサービスを開始でき、ユーザーが別のアプリケーションに切り替えた場合でも、サービスはバックグラウンドで実行され続けます。さらに、コンポーネントはサービスにバインドしてサービスと対話し、プロセス間通信(IPC)を実行することもできます。たとえば、サービスは、ネットワークトランザクションの処理、音楽の再生、ファイルI/Oの実行、またはコンテンツプロバイダーとの対話をすべてバックグラウンドで実行する場合があります。

4