我一直在 Stackoverflow 上寻找并在谷歌上搜索正确的方法,但找不到。我想我不会是唯一一个遇到这个问题的人。
我有一个应用程序定期检查服务器上的更新数据。有一个带有时间戳的文件应该被检查。更改后,它将下载新数据(xml 文件)。
目前,我启动了一个处理程序,为了进行测试,我只打印了一个 toast:
Handler h;
Runnable r = new Runnable() {
@Override
public void run() {
Toast.makeText(MyActivity.this, "YEEEEEP!",
Toast.LENGTH_LONG).show();
h.postDelayed(this, 5000);
}
};
然后在onCreate()
:
h = new Handler();
h.post(r);
在onDestroy()
我删除了可运行对象,因此当用户在此 Activity 中按下以退出应用程序时,处理程序将停止。
它工作正常,它在其他活动中一直显示吐司,但是当用户按下“主页”按钮时,应用程序当然会继续运行!我想要的是,仅当用户认为应用程序正在运行时才运行更新检查。
以前有人解决过这个问题吗?如果有更好的方法可以通过服务做到这一点,欢迎提出任何建议。但我认为使用服务时问题没有区别。