在我的一个Android应用程序中,我需要每分钟运行一次任务。即使应用程序关闭并且设备也处于空闲状态,它也应运行。
有人可以建议更好的方法来处理这种情况吗?
谢谢 布瓦纳
答案 0 :(得分:0)
如果未定义更长的时间,则工作管理器只能在间隔15分钟内工作。要每分钟运行某些内容,您需要一个前台服务,其中带有粘性通知。每分钟都没有其他方法可以运行某事。
要启动前台服务,请照常创建服务,并在其onStartCommand
中调用startForeground
,然后从方法中返回START_STICKY
。这些应该可以满足您的需求。
编辑:处理程序线程的示例代码(这是Java btw,在Xamarin上应该类似):
private HandlerThread handlerThread;
private Handler backgroundHandler;
@Override
public int onStartCommand (params){
// Start the foreground service immediately.
startForeground((int) System.currentTimeMillis(), getNotification());
handlerThread = new HandlerThread("MyLocationThread");
handlerThread.setDaemon(true);
handlerThread.start();
handler = new Handler(handlerThread.getLooper())
// Every other call is up to you. You can update the location,
// do whatever you want after this part.
// Sample code (which should call handler.postDelayed()
// in the function as well to create the repetitive task.)
handler.postDelayed(() => myFuncToUpdateLocation(), 60000);
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
handlerThread.quit();
}