私は以下のタスクを持っています:10分ごとにインターネットからデータを実行して取得するサービスを作る。私はService + Timerの組み合わせを使用しようとしますが、この場合はサービスを制御できません。サービスのonCreate()メソッドの遅延でTimerTaskを実行し、TimerTask割り込みサービスが停止しない場合)。私は2つのボタンだけが必要です: "サービス開始"と "サービス停止"。この場合の最善の方法は何ですか?助けてくれてありがとう。タイマーで働くためのサービスの仕方は?
答えて
よく分かっていると、サービスを中断したときにTimerTaskを停止する方法を知りたいですか? もしそうなら、読んでください。そうでなければ、より良く説明してください。
TimerTaskが(繰り返し実行されるようにスケジュールされていると仮定して)実行を停止するには、cancel()メソッドを呼び出す必要があります。好ましい方法は、外部で設定可能なブールフラグをチェックした後、TimerTask自身がcancel()メソッドを呼び出させる方法です。例えば
:
class MyTimerTask extends TimerTask() {
private boolean alive = true;
public void run() {
if (alive) {
// do something
} else {
cancel();
}
}
public void stop() {
alive = false;
}
}
はその後、それはあなたがあなたのサービスを中断するとき、あなただけのMyTimerTask.stopを呼び出す必要があることは明らかです()。
ありがとうございます。私は、サービスのonCreate()メソッドでServiceを実行し、timer(クラスのメンバー)timer.scheduleAtFixedRate(..)を実行します。サービスはサービスのonDestroy()メソッドを実行しますが、タイマーは引き続き動作します。いいです、5分ごとにインターネットサービスをチェックする必要があります。しかし、すでにサービスを停止している場合、どのようにタイマーを止めることができますか?または、5分ごとにWebサービスのチェックをどのように整理できますか? – user1078760
あなたが言っていることから、Timertaskはあなたがサービスを終了した後に生き残るべきです....だから、それはサービスのメンバーであってはなりません。 TimerTaskリファレンスは、常に実行できるクラスにしておいてください。あなたは常にクラスを実行していない場合は、1つを作成します...それのための新しいスレッドを開始する必要があります...あなたがいくつかのデモコードを投稿すれば、再間違っている。 – Renato
AlarmManagerを使用する必要があります。この質問はAndroid: How to use AlarmManagerを参照してください。 10分間何もしないであなたのサービスを生かし続けることで、ユーザーのメモリを浪費する必要はありません。また、電話がスリープ状態にある場合、タイマーは実行されません。 AlarmManagerを使用すると、電話機は自動的に10分ごとに起動し、サービスを呼び出してインターネットダウンロードタスクを実行できます。
- 1. ブランチで働くためのひげのテンプレートの入手方法
- 2. ゴランのタイマーの仕組み
- 3. サウスヘロクでDjangoのアプリケーションのために働く方法
- 4. アップルプッシュ通知サービス(APNS)は私のために働きません
- 5. サービスのタイマー
- 6. もし他の人がpython3のために働く方法
- 7. 小さな仕事のためのサービスの使用
- 8. サービスの仕方アンドロイドで再起動
- 9. ネッティーフォークtomcatに - サポート私はOpenSSLサポートのために働く私のネッティーを得るために働いていた
- 10. サービスでタイマーを呼び出す方法
- 11. PhoneGapは私の仕事に関係なくRESTサービスを使いたくない
- 12. タイマー機能でタイマーを止める方法は?
- 13. OnStartタイマーではなくタスクを使用するWindowsサービス
- 14. なぜ、||オペレータは私のために働く?
- 15. autoLink電話は保存番号のために働く
- 16. ウェブサイトは、WWWのために404エラーが働く
- 17. $ browser-> resize(INT、INT);もはや私のために働く?
- 18. カピバラは働くために睡眠が必要ですか?
- 19. ヘブライ語で働くためにhtmlParseを取得するには?
- 20. ガンコーンで働くためのアクセスログが得られません
- 21. サービスでタイマーを開始
- 22. モデルは、多くの関係に多くのために働いていない
- 23. 私のWPプラグインはなぜ同じ人のために働くのですか?
- 24. e.KeyCode私のために働きたくない
- 25. カサンドラのJavaセットのために働くBoundStatement.setListドライバーだけでなく
- 26. パッケージ本体のグローバル変数が複数のユーザのために働く方法
- 27. Android:ストップウォッチ(タイマー)inサービス
- 28. タイマー付きWindowsサービス
- 29. ユーザーコメントを保存するためのデータ構造の仕方は?
- 30. オンライン試験のためのJavascriptタイマー
AlarmManagerを使用する必要があります。この質問をご覧くださいhttp://stackoverflow.com/questions/1082437/android-alarmmanager –
ありがとうございます。しかし、なぜ私はそれのためのタイマーを使用することはできません? – user1078760
サービスを10分間何もしないでおくことで、ユーザーのメモリを浪費する必要はありません。また、電話がスリープ状態にある場合、タイマーは実行されません。 AlarmManagerを使用することにより、電話機は自動的に10分ごとに起動し、サービスのインターネットダウンロードタスクの実行を呼び出すことができます。 –