非粘性&当我从任务管理器关闭应用程序时,粘性服务被破坏

时间:2018-01-08 11:34:20

标签: android service

我的应用程序运行非粘性服务,每当我通过刷它从任务管理器关闭应用程序时,它也会立即终止我的服务。我只在Oppo手机中遇到这个问题。

2 个答案:

答案 0 :(得分:1)

  

在Oppo F1上你需要将COL Reminder添加到“启动管理器”   允许在后台运行。

     

转到“安全中心”。单击“隐私权限”然后“启动”   经理“并允许”COL Reminder“在后台运行。

           

如果仍然无效,请检查以下步骤:

     

转到设置&gt; <电池和存储>电池管理器&gt;点击“电源”   消费细节“&gt;针对过度耗电进行优化。现在   取消选中您遇到的所有应用程序。   enter image description here

答案 1 :(得分:0)

许多智能手机如Xiamoi,Oppo,Vivo都会杀死后台服务,即使它运行时使用标记START_STICKY来改善资源/电池优化。

您无法以编程方式默认启用自动启动功能。

许多解决方案/建议已在许多主题中得到解答。
这个是从this thread获取的,它将用户带到相应的自动启动/启动管理器/安全中心,您可以通过显示吐司/警报要求用户为您的应用启用自动启动,其余全部取决于用户:

try {
    Intent intent = new Intent();
    String manufacturer = android.os.Build.MANUFACTURER;
    if ("xiaomi".equalsIgnoreCase(manufacturer)) {
        intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
    } else if ("oppo".equalsIgnoreCase(manufacturer)) {
        intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
    } else if ("vivo".equalsIgnoreCase(manufacturer)) {
        intent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
    } else if("oneplus".equalsIgnoreCase(manufacturer)) { 
        intent.setComponent(new ComponentName("com.oneplus.security", "com.oneplus.security.chainlaunch.view.ChainLaunchAppListAct‌​ivity")); }

    List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    if  (list.size() > 0) {
        context.startActivity(intent);
    } 
} catch (Exception e) {
    Crashlytics.logException(e);
}
对于Facebook,Instagram和其他Facebook家庭应用等某些应用,默认情况下启用了

P.S。自动启动功能,他们可能会与设备制造商达成协议。