1

我有一个应用程序,它MainActivity有一个从按钮点击调用的方法(称为doUpdate())。这使用MainActivity的公共变量来访问数据库,执行一些更新,并更新一些记录。这很好用。

我们现在还需要使用 a 来自动化它PeriodicTask

我创建了一个GCMTaskManager服务如下:

public class MyPeriodicTaskService extends GcmTaskService {
  public MyPeriodicTaskService() {
  }

  @Override
  public int onRunTask(TaskParams taskParams) {
    Log.i("MYLOG","Task Running...");
    return 0;
  }
}

在我的 MainActivity 中onCreate(),我设置PeriodicTask如下:

 GcmNetworkManager networkManager=GcmNetworkManager.getInstance(this);
 PeriodicTask task=new PeriodicTask.Builder()
    .setService(MyPeriodicTaskService.class)
    .setPeriod(60)
    .setFlex(30)
    .setRequiresCharging(true)
    .setTag("UpdateSchedule")
    .build();
 networkManager.schedule(task);

通过查看日志,我知道onRunTask()火灾会如我所愿定期发生。

现在我需要调用我的MainActivity方法doUpdate()...... 因为这个方法是声明的PUBLIC VOID而不是声明STATIC的,所以我不能从服务中调用它doRunTask()。如果我尝试将其设为 a STATIC PUBLIC VOID,则MainActivity无法根据内部处理步骤的需要正确访问变量。

我该如何解决这个问题......有什么建议吗?

4

0 回答 0