служба прерывается на фоне, даже если добавлены startForegroundService и startForeground - PullRequest
0 голосов
/ 17 декабря 2018

Мастера: В моей программе есть следующая проблема: Платформа компиляции: Android Studio 3.2. Возможность теста: Android 8.0. Операция: нажмите «Домой», заставьте прогрем работать в фоновом режиме.все нормально в состоянии зарядки.Если не взимать плату, услуга будет "мертвой" примерно через одну минуту.Как я могу заставить его жить дольше?Благодарю.прикрепленные коды:

======== первая часть: класс активности (частичные коды)

Intent i=new  Intent(this,RegistService.class); 
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
   this.startForegroundService(i);
} else {
   this.startService(i);
}

======== 2-я часть: класс обслуживания

public class RegistService extends Service {
    Timer timer;
    int num=0;
    public static final String CHANNEL_ID_STRING = "test001";
    @Override
    public void onCreate() {
        super.onCreate();
        NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationChannel mChannel = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            mChannel = new NotificationChannel(CHANNEL_ID_STRING, "test001", NotificationManager.IMPORTANCE_HIGH);
            notificationManager.createNotificationChannel(mChannel);
            Notification notification = new Notification.Builder(getApplicationContext(), CHANNEL_ID_STRING).build();
            startForeground(28, notification);
        }
    }
    @Override
    public void onStart(Intent intent, int startId) {
        TimerTask task = new TimerTask(){
            public void run(){
                num=num+1;
                Log.v(num+"count","test");
            }
        };
        timer = new Timer();
        timer.schedule(task, 1000,1000);
    }
    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
    }
}
...