我在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分钟(似乎有点矫枉过正)。
有什么建议吗?
答案 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)
让用户决定。实现这两者,没有比用户无法控制的重复过程更糟糕的了。