我在应用程序上使用了多计时器,当应用程序进入主屏幕或手机被锁定时,我启动了服务,并且多计时器继续在后台运行,但几分钟后在华为和Oppo设备上服务停止(大约3-4分钟) )。我已经尝试了几乎所有内容(包括前台服务,后台服务,唤醒锁)。
这是我的代码
public class BroadcastService extends Service {
public static final String COUNTDOWN_TIMER = "package_name.countdown_timer";
Intent bi = new Intent(COUNTDOWN_TIMER);
String value;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
stopForeground(true);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
value = intent.getStringExtra("VAL");
final int i = Integer.valueOf(value);
AlarmActivity.adapter.mCountDownTimer.set(i, new CountDownTimer(AlarmActivity.adapter.mTimeLeftInMillis[i], 1000) {
@Override
public void onTick(long millisUntilFinished) {
AlarmActivity.adapter.ChangeTime(millisUntilFinished,i);
bi.putExtra("countdown", i);
sendBroadcast(bi);
Notification();
}
@Override
public void onFinish() {
AlarmActivity.adapter.StartSoundAndVibration();
AlarmActivity.adapter.ShowDialog();
boolean timerIsRunning = false;
for(int i=0;i<AlarmActivity.alarmList.size();i++){
if (AlarmActivity.adapter.mCountDownTimer.get(i) != null) {
timerIsRunning = true;
}
}
if (timerIsRunning == false && Context.NOTIFICATION_SERVICE!=null) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) getApplicationContext().getSystemService(ns);
nMgr.cancel(0);
}
}
}.start()
);
return START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
Intent restartServiceIntent = new Intent(getApplicationContext(),this.getClass());
restartServiceIntent.setPackage(getPackageName());
startService(restartServiceIntent);
super.onTaskRemoved(rootIntent);
}
public void Notification(){
Intent notificationIntent = new Intent(this, AlarmActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,
0, notificationIntent, 0);
Notification notification = new NotificationCompat.Builder(this, "channel1")
.setContentTitle("Foreground Service")
.setContentText("text")
.setSmallIcon(R.drawable.alarmicon)
.setContentIntent(pendingIntent)
.build();
startForeground(1, notification);
}
}
我无法解决问题。我该怎么办?