我想每10分钟运行一个特定的方法doThis()
(这不是CPU密集型操作,它只是对Web服务器的POST),并且当该方法执行完毕时,通知用户(通过Toast
或Notification
或类似的东西)。但我不想阻止UI线程,因为我希望用户仍然可以与UI进行交互。最有效的方法是什么?通过Handler
?或Service
或某种类型(即IntentService
)?
答案 0 :(得分:3)
IMO使用ScheduledThreadPoolExecutor时最干净,最有效的方式,请查看我的答案here以获取代码示例,希望此帮助。
答案 1 :(得分:0)
答案 2 :(得分:0)
我通过AsyncTask
执行此操作。 doInBackground()
方法看起来像这样(只是一个伪代码):
doInBackground(String... params){
while (running){
doThis();
Thread.sleep(10 * 1000);
}
}
我想补充一点,我的应用程序更频繁地执行这些更新(GET和POST)(每5-10秒)并向用户显示新值 - 这就是我使用Activity的原因。您可以从服务中启动AsyncTask。
你拥有的另一个选择是使用AlarmManager
- 虽然我没有走这条路。
答案 3 :(得分:-1)
我建议计时器类,因为您声明必须执行定时任务。 如果您需要在活动运行时执行此操作 你可以在Activity中使用 Timer 类来实现相同的功能,否则你可以把它放在服务中以便在后台运行..
请参阅此链接。 :http://developer.android.com/resources/articles/timed-ui-updates.html