我正在实施一种app app跟踪器,它需要在后台运行服务。因此,在打开应用程序时调用服务,并在调用stopself()时停止服务。服务还包含一直运行的线程。它曾经运行完美。但是从最近几天开始它会停止一段时间。在完成某项任务后来到我的应用程序的ui服务停止! 有谁能建议我解决方案?
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("SERVICE","started");
if(intent != null && intent.getAction() != null)
{
day=intent.getExtras().getInt("day")+5;
Toast.makeText(this, "day" +day, Toast.LENGTH_LONG).show();
apps=intent.getStringArrayListExtra("apps");
items=apps.size();
timer=intent.getIntegerArrayListExtra("timer");
Run[] a=new Run[items];
t=new Thread[items];
for(int i=0;i<items;i++)
{
int sec=0;
app=apps.get(i).toString();
time=timer.get(i);
a[i]=new Run(app, time,sec);
Log.e("APPTIME",app+ " "+time);
t[i]=new Thread(a[i]);
t[i].start();
}
}
return super.onStartCommand(intent, flags, startId);
}
答案 0 :(得分:1)
您应该以STICKY_SERVICE
开始服务Example以STICKY
开头START_STICKY and START_NOT_STICKY
的主题如果您正在使用Android KitKat
,则应考虑reading this答案 1 :(得分:0)
尝试实施前台服务。 foreground service
前台服务会显示通知,并且在您需要之前永远不会停止。
在您的服务“onCreate”
中实施此代码段Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
System.currentTimeMillis());
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
getText(R.string.notification_message), pendingIntent);
startForeground(ONGOING_NOTIFICATION_ID, notification);