以设定的间隔执行方法的最有效方法?

时间:2011-12-20 03:13:35

标签: java android service handler

我想每10分钟运行一个特定的方法doThis()(这不是CPU密集型操作,它只是对Web服务器的POST),并且当该方法执行完毕时,通知用户(通过ToastNotification或类似的东西)。但我不想阻止UI线程,因为我希望用户仍然可以与UI进行交互。最有效的方法是什么?通过Handler?或Service或某种类型(即IntentService)?

4 个答案:

答案 0 :(得分:3)

IMO使用ScheduledThreadPoolExecutor时最干净,最有效的方式,请查看我的答案here以获取代码示例,希望此帮助。

答案 1 :(得分:0)

AsyncTask怎么样?

doInBackground方法将帮助您在特定时间间隔内在后台运行特定方法,而无需与UI线程交互。

onPostExecute将帮助您使用Toast

通知用户

答案 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