Android 在应用程序处于前台时定期检查更新

Android 在应用程序处于前台时定期检查更新,android,service,handler,Android,Service,Handler,我一直在Stackoverflow和Google上寻找正确的方法,但没有找到。我想我不是唯一一个有这个问题的人 我有一个定期检查服务器上更新数据的应用程序。有一个带有时间戳的文件,应该检查它。更改后,它将下载新数据(xml文件) 现在,我启动了一个处理程序,为了进行测试,我只需打印一个祝酒词: Handler h; Runnable r = new Runnable() { @Override public void run() { Toast.makeText

我一直在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()
中:

onDestroy()
中,我删除了可运行项,因此当用户在此活动中按back退出应用程序时,处理程序停止

它工作正常,在其他活动中它会一直显示祝酒词,但当用户按下“主页”按钮时,应用程序当然会继续运行!我想要的是,只有当用户相信应用程序正在运行时,更新检查才会运行

以前有人处理过这个问题吗?
如果有更好的方法通过服务实现这一点,欢迎提供任何建议。但我认为在使用服务时,问题没有区别。

使用广播接收器检查更新。应用程序处于前台模式

试试这个

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);
  }
} 
通读本教程,了解有关广播接收器的更多详细信息


例如

也来看看这个。但在应用程序停止后,服务仍将运行,对吗?如果应用程序停止,服务也将停止。仍然没有答案…问题是,当您按“主页”时,应用程序不会停止。你真的确定吗?当应用程序停止时,服务是否停止?这不是服务的目的吗,当用户离开应用程序时,在后台保持活跃?如果用户按下home(主页)按钮,我们的广播接收器或服务将不会停止,我敢肯定。如果用户强制停止应用程序或清除数据(在管理应用程序中手动),它也将停止。如果用户简单地离开(按home按钮),服务和广播接收器将保持活动状态。请使用TimerTask方法将其做好。我没有使用TimerTask,因为有人说它对Android不好:不,你可以使用它,我已使用它作为我的工作鳍。好的。但是,用户返回“主页”屏幕后,timertask仍将运行。您必须取消onDestroy方法上的timertask对象。
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);
  }
}