设置重复的android任务的最佳方法

时间:2011-12-13 16:30:18

标签: android multithreading timer

我在onCreate中创建了以下线程,但意识到此调用需要每20分钟左右执行一次:

 Thread t = new Thread() {
    public void run(){
       setTopUsers();
    }
  };

  t.start();

 private void setTopUsers() {
    ...

    for(Map.Entry<Double,String> entry : myMap.entrySet()) {
           key = entry.getKey();
           value = entry.getValue();

           if(...)
              view.setText(...)
       }
}

被调用的方法只是处理来自TreeMap的信息并将结果显示给UI。我正在试图弄清楚处理这个问题的最佳方法是什么:1)创建一个在单独的线程上运行的Timer(但我读过这不是一个好主意),2)创建一个每20个处理一次的服务Intent分钟(似乎有点矫枉过正)。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这样的事情应该有效:

Intent intent = new Intent(this, ProcessService.class);
PendingIntent pIntent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.cancel(pIntent);
am.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), INTERVAL, pIntent);

答案 2 :(得分:0)

让用户决定。实现这两者,没有比用户无法控制的重复过程更糟糕的了。