如何在后台运行服务即使应用程序关闭,自动启动权限也会被禁用

时间:2017-08-25 19:13:46

标签: android

从最近的屏幕移除应用时,Android后台服务停止。任何人都可以帮助制作始终在后台运行的服务,即使应用程序已关闭,也会禁用自动启动权限。

某些设备具有自动启动权限。如果禁用此权限,则当我们从最近的屏幕关闭应用程序时,服务不会重新启动。

2 个答案:

答案 0 :(得分:2)

你做不到。如果应用程序强行关闭,服务无法运行,这是一个安全问题 - 用户需要关闭应用程序。这包括刚刚安装应用程序(它已安装到强制停止状态),并且用户必须启动它以在任何服务运行之前将其从那里删除。

答案 1 :(得分:1)

如果您使用自定义ROM,我们无能为力。您可能会看到Facebook和Messenger等应用程序仍在运行。它们正在运行,因为它们是该rom的白名单应用程序。如果你希望你的服务保持活力,你可以做一些事情,但这个过程也需要自动启动权限。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    //setupNotificationListenerForNewRequest();
    return Service.START_STICKY;
}

删除了表单任务??

@Override
public void onTaskRemoved(Intent rootIntent) {
    super.onTaskRemoved(rootIntent);

    startService(new Intent(getApplicationContext(), Service.class));

}

被摧毁?

 @Override
public void onDestroy() {
    super.onDestroy();

    Intent myIntent = new Intent(this, Service.class);

    PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, myIntent, 0);

    AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);

    Calendar calendar = Calendar.getInstance();

    calendar.setTimeInMillis(System.currentTimeMillis());

    calendar.add(Calendar.HOUR, 6);

    alarmManager1.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

}
希望这些有助于......