几分钟后,Android服务在某些设备上停止在后台运行

时间:2020-05-19 11:59:21

标签: android service timer background-service foreground-service

我在应用程序上使用了多计时器,当应用程序进入主屏幕或手机被锁定时,我启动了服务,并且多计时器继续在后台运行,但几分钟后在华为和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);
    }



}

我无法解决问题。我该怎么办?

0 个答案:

没有答案