Android 在特定时间后启动服务
我在我的项目中做了一项服务,我想每2分钟开始一次。我正在使用下面的代码,但它不能正常工作Android 在特定时间后启动服务,android,Android,我在我的项目中做了一项服务,我想每2分钟开始一次。我正在使用下面的代码,但它不能正常工作 public class ScheduleSync extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { AlarmManager service = (AlarmManager) context.getSystemService(C
public class ScheduleSync extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent)
{
AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, StartMyServiceReceiver.class);
PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,PendingIntent.FLAG_CANCEL_CURRENT);
Calendar cal = Calendar.getInstance();
service.setInexactRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), 60000*2, pending);
}
}
public class StartMyServiceReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "receive broadcast", Toast.LENGTH_LONG).show();
Log.d("StartMyServiceReceiver", "receive broadcast");
Intent service = new Intent(context, myservice.class);
context.startService(service);
}
}
请在这个问题上帮助我。当我看到taskmanager myservice在后端运行时。为什么要使用
AlarmManager
只需使用线程睡眠(xxxx):
只需使用Timmer任务:而不是在我的情况下工作。。。当我在taskmanager中看到服务正在运行时。在服务中,我正在状态栏中发送通知。根据上面的de代码,它应该每2分钟发送一次通知,但它没有这样做。尝试将第二个服务更改为service,而不是broadcastreceiver。第二个不能是broadcastreceiver,因为您知道通知何时到达,所以您只需将其发送给另一个服务。我认为这在broadcastreceiver中不起作用。因为在处理广播时,应用程序会得到一组固定的时间(目前为10秒)来完成其工作。如果没有在这段时间内完成,应用程序将被视为行为异常,其进程将立即进入后台状态,以便在需要时为内存而终止。查看此项了解更多详细信息
public class ScheduleSync extends BroadcastReceiver{
private Context context;
private void startOtherService(){
Intent i = new Intent(context, StartMyServiceReceiver.class);
context.startService(i);
}
@Override
public void onReceive(Context context, Intent intent)
{
this.context = context;
new Thread(new Runnable(){
public void run(){
try{
Thread.sleep(2*60*1000);
startOtherService();
}catch(InterruptedException e){
e.printStackTrace();
}
}
}).start();
}
}