我一直在寻找Stackoverflow和google搜索正确的方法,但找不到一个。我想我不会是唯一有这个问题的人。
我有一个应用程序,定期检查服务器上的更新数据。有一个带有时间戳的文件应该被检查。当它发生变化时,它将下载新数据(xml文件)。
目前,我启动了一个处理程序,用于测试我只是打印一个吐司:
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()
中的我删除了runnables,因此当用户在此Activity中按下以退出应用程序时,处理程序停止。
它工作正常,它在其他活动中一直显示吐司,但是当用户按下“主页”按钮时,应用程序当然会继续运行!我想要的是,仅当用户认为应用程序正在运行时才会检查更新。
以前有人解决过这个问题吗? 如果有更好的方法通过服务这样做,欢迎任何建议。但我认为使用服务时问题没有区别。
答案 0 :(得分:-1)
使用广播接收器检查更新。应用程序在前台模式。
试试这个。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, WordService.class);
context.startService(service);
}
}
通过这个来获得有关广播接收器的更多细节。
http://developer.android.com/reference/android/content/BroadcastReceiver.html
例子。 http://www.compiletimeerror.com/2013/03/android-broadcast-receiver-in-detail.html