2017-08-25 113 views
-3

当从近期屏幕中删除应用程序时,Android后台服务将停止。即使应用程序关闭并且自动启动许可权被禁用,任何人都可以帮助完成始终在后台运行的服务。如何在后台运行服务,即使应用程序关闭并且自动启动权限被禁用

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

+0

确定'Service'停止?当从最近的应用中删除应用时,它实际上会重新启动。你怎么知道它停止了? –

+0

是的我知道,但有些设备具有自动启动权限。如果此权限被禁用,那么当我们从最近的屏幕关闭应用程序时,服务不会重新启动。 –

回答

2

你不行。如果应用程序被强制关闭,则服务无法运行,这是一个安全问题 - 需要用户关闭应用程序的方式。这包括应用程序刚刚安装(其安装强制停止状态),用户必须启动它才能在任何服务运行之前从中删除它。

+0

当应用程序从最近的屏幕中删除时服务停止。 –

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); 

} 

希望这将有助于...

+0

那么有什么办法以编程方式启用自动启动权限? –

+0

没有..我的Xaiomi设备面临同样的问题,但是您可以从您的应用打开自动权限选项卡。但你不能自己给予许可。 –

相关问题