1

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

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

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

4

1 回答 1

-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

于 2013-04-25T07:28:35.563 回答