我的问题是,当我从最近的列表中清除程序时,该服务已停止并且无法正常工作。
这是在Android 5上发生的,在Android 4上没有问题。
我什至在清单中处理该服务,但是当该进程打开时,该服务未执行。(android:process=":process"
)
在该页面关闭后,我将在Android 5及更高版本上将此服务保留在前台,该服务将被删除并且什么也不会发生。
总而言之,我想每5秒替换一次我的位置和其他任务,以将用户显示为Notification,并且希望在服务中执行此操作。
启动活动中的服务:
if (!AppController.IsServiceRunning(TaxiService.class)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
startForegroundService(new Intent(this, TaxiService.class));
else
startService(new Intent(this , TaxiService.class));
}
在manifest.xml中:
<service
android:name=".TaxiService"
enabled="true" />
服务中:
public class TaxiService extends BaseService {
private Timer timer;
private TimerTask timerTask;
private long PERIOD = 60 * 1000;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
startTimer();
startForeground(Variable.NOTIFICATION_ID_FOR_WAITING_STUDENT , Notification.ForegroundServiceNotification());
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
sendBroadcast(new Intent("ServiceIsKilled"));
}
public void startTimer() {
//set a new Timer
timer = new Timer();
//initialize the TimerTask's job
initializeTimerTask();
//schedule the timer, to wake up every 1 second
timer.schedule(timerTask, 1000, PERIOD); //
}
public void initializeTimerTask() {
timerTask = new TimerTask() {
public void run() {
WaitingStudent();
GetLocation();
}
};
}
答案 0 :(得分:1)
您必须将Intent Service与方法
一起使用startForeground()
如果您希望服务在运行时继续运行