我有一个应用程序,它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
无法根据内部处理步骤的需要正确访问变量。
我该如何解决这个问题......有什么建议吗?