我需要让我的 RSS Feed 阅读器每 10 分钟检查一次 feed 中是否有新帖子,然后在有新帖子时解析它们。我还需要大约每分钟更新一次用户界面。
我从不同的来源读到和听到了不同的事情。我目前的理解是我可以使用ScheduledThreadPoolExecutor
创建两个调度线程,其中一个需要Handler
用于更新用户界面。我不确定这些类的最有效使用方式是什么TimerTask
.
我也非常不确定在哪里创建这些的子类。一位朋友建议延长TimerTask
作为我的内部类FeedParser
类以使其更简单。但是,要以这种方式实现它,我必须使用run()
方法用于TimerTask
而不覆盖它,这意味着我不能简单地使用需要运行的函数所需的参数。
简而言之,为此安排任务的最佳方法是什么?我将在哪里实施这些任务?
我更喜欢使用 ScheduledThreadPoolExecutor。一般来说,如果我正确理解您的需求,所有这些都可以在您的活动中实现,不需要 TimerTask 和 Handler,请参阅下面的示例代码:
public class MyActivity extends Activity {
private ScheduledExecutorService scheduleTaskExecutor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
scheduleTaskExecutor= Executors.newScheduledThreadPool(5);
// This schedule a task to run every 10 minutes:
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
// Parsing RSS feed:
myFeedParser.doSomething();
// If you need update UI, simply do this:
runOnUiThread(new Runnable() {
public void run() {
// update your UI component here.
myTextView.setText("refreshed");
}
});
}
}, 0, 10, TimeUnit.MINUTES);
} // end of onCreate()
}
请记住在 Activity.onDestroy() 中正确完成/关闭可运行任务,希望有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)