在前台app上定期检查更新

时间:2013-04-25 07:25:23

标签: android service handler

我一直在寻找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中按下以退出应用程序时,处理程序停止。

它工作正常,它在其他活动中一直显示吐司,但是当用户按下“主页”按钮时,应用程序当然会继续运行!我想要的是,仅当用户认为应用程序正在运行时才会检查更新。

以前有人解决过这个问题吗? 如果有更好的方法通过服务这样做,欢迎任何建议。但我认为使用服务时问题没有区别。

1 个答案:

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