2012-01-26 9 views
2

私はGoogle、SO、Androidの開発者を検索しましたが、私は意思決定にさらなる助けが必要です。これは個別の科目で議論されていますが、私は洞察力/意思決定に少し助けてください。Androidでマルチプルインターバルタイマーを繰り返すには?

私が達成したいのは、例えば45分後にアラームを発し、その後15分後にアラームを鳴らすタイマーのようなものです。最後のアラームが発生すると、サイクルは無限に再開します。これは、開始 - > 45分のカウントダウン - >アラーム - > 15分のカウントダウン - >アラーム - >サイクルを繰り返すために45分のカウントダウンに戻ります。

これはWork/Break-Cycleアプリを構築しようとする試みですが、私は特定の問題と同様に考えられる設計上の欠陥があります。要するに

私の目標、:

  • は、特定の間隔でアラームを発射作業/ブレークサイクルを作成します
  • は、それが
  • (必ずしも画面上を持つように強制することなく)電話睡眠を生き残る作ります
  • アップデートは、各インターバル/タイマの

の進捗状況のフィードバックを得るためのUIは、現在、私はとRunnableを実装するサービスを使用して(一般的には、異なるいくつかの仕様があります)です異なるタイマーの持続時間に一致する遅延。最初の遅延がアップしている場合(45分後)、別のRunnableが初期化されて実行されます(15分に設定されます)。 これはかなりうまくいきます。私はサービスのための部分的なwakockockを利用し、ほとんどの時間はこれを約1サイクル実行するが、それから物事は静かに止まるように見える。アプリケーションを閉じてもう一度起動すると、サイクルが再開します。

ここから、私は、各タイマーに残っている分量でUIを更新したいと思います。これは、何とか定期的に、視覚的進歩を見るためにUIに「投稿」を作成する必要があることを意味します。

これは正しい方法ですか?私はこれについてもう一つのアプローチをして、適切なものは何でしょうか?

+0

だから、それだけで今までに一度実行します - 45分後、15分後、何? (ほんの数分ではなく数秒でテストしたいと思っていますか?) – weston

+0

AlarmManager#setRepeating(..)は、triggerAtTimeを将来45分、15分間隔で提供します。再起動の間にアラームを復元するには、ブート完了のブロードキャスト受信機が必要です。トリガーポイントごとに重い持ち上げをする場合は、作業中に少なくとも部分的なウェイクロックを保持することを検討してください。 – Jens

+0

@ weston:明確にしましょう。サイクルは45分→15分→45分→15分と無限に繰り返されます。 –

答えて

4

AlarmManagerを使用して、アラームのスケジュールを設定した時刻に発生させるIntentが何であれ、アラームをスケジュールします。 45分アラームが消えたら、別のアラームをスケジュールし、アラームが消えたら45分アラームをスケジュールします。あなたの活動にこのような何かを残されているどのくらいの時間を伝えるためにUIに毎分を更新するには EDIT

public class MyActivity extends Activity { 
int minutes = 45; 
TextView tv; 
public void onCreate(Bundle state) { 
super.onCreate(state); 
//set the content, grab your textview, etc...boilerplate 
    Handler handler = new Handler(); 
    //schedule alarm here and post runnable as soon as scheduled 
    handler.post(r) 
} 

    //somewhere else in your Class 
    Runnable r = new Runnable() { 
      @Override 
      public void run() { 
      if(!minutes == 0) 
       tv.setText(minutes--); 
       handler.postDelayed(this, 60000); //run the runnable in a minute again 
      else 
       handler.removeCallbacks(this); 
      } 
     }; 
} 
+1

さて、アラームを設定するためのAlarmManagerを見てみましょう。AlarmManagerを使用すると、アラームがオフになる時刻を設定できますが、毎分UIを更新して、アラームが消えるまでの時間を教えてください。 –

+0

@DrLaban私の編集を参照してください:) – LuxuryMode

+0

私はこれを試してみて、ちょっと試してみて、私が思いつくものを見てみましょう。それがまだ私に目を覚ますかどうかは分かりませんが、私が心配している間、私はいくつかのフォローアップをするかもしれません。 –

関連する問題