2

ボタンを使ったアクティビティがあります。そのボタンを押すと、10 分ごとにメソッドが呼び出されます。

Handleraと aを使用してそうしようとしていTimerます。しかし、結果を得ることができませんでした。

4

5 に答える 5

20

Timerオブジェクトを作成し、TimerTask実行したいコードを実行するオブジェクトを指定します。

Timer timer = new Timer ();
TimerTask hourlyTask = new TimerTask () {
    @Override
    public void run () {
        // your code here...
    }
};

// schedule the task to run starting now and then every hour...
timer.schedule (hourlyTask, 0l, 1000*60*60);   // 1000*10*60 every 10 minut

Timerオブジェクトを使用する利点は、それぞれが独自のタイミングや遅延などを持つ複数のTimerTaskオブジェクトを処理できることです。Timerオブジェクトをクラスとして宣言することで、Timerオブジェクトを保持している限り、タイマーを開始および停止することもできます。変数か何か。

于 2012-11-29T12:49:41.987 に答える
3

次のコードを使用します。このコードでは、2番目のパラメーターとして指定したミリ秒数が経過するとnotifyme()が繰り返されます。

    Timer timer = new Timer();
    timer.schedule(new TimerTask()
    {
       public void run()
       {
           View v = new View(getApplicationContext());
           notifyMe(v);
       }},4000,100000);

    }
于 2012-11-29T12:51:09.070 に答える
2

アプリをバックグラウンドで実行する必要がない場合は、 AlamManagerを使用してください。それ以外の場合は、常に実行されているサービスとCountDownTimerを使用できます

于 2012-11-29T12:50:03.150 に答える
1

Alarm Managerは、アプリケーションが現在実行されていない場合でも、特定の時間にアプリケーション コードを実行したい場合を対象としています。

通常のタイミング操作 (ティック、タイムアウトなど) では、Handler を使用する方が簡単で効率的です。

于 2012-11-29T12:52:33.323 に答える
1

-使用する方がService良いActivity です View

-限定または限定解除Serviceできます。Activity

サービスの例については、次のリンクを参照してください。

http://www.vogella.com/articles/AndroidServices/article.html

-それでもスレッドを使いたい場合は、これを試してください...

1. Thread (非 UI)専用 UI スレッドにデータを投稿しない場合、Handler を使用する必要はありませんが、使用する場合は Handler が必須です

例えば:

Handler h;    
onCreate() {    
  h = new Handler();
  new Thread(new Runnable() {
    public void run(){
      while(true){
        try{
          h.post(new Runnable(){
            public void run(){
              go();
            }
          }
         TimeUnit.MINUTES.sleep(10);
       }
       catch(Exception ex){
       }
     }
    }
  }).start();
} 
public void go(){
  // This method is called every 10 minutes
}

Painless Threadingとして知られているものを使用して、これと同じことを行いますAsyncTask

于 2012-11-29T13:05:48.580 に答える