每当 App 在 android pie 中被杀死时,服务也会被杀死

Posted

技术标签:

【中文标题】每当 App 在 android pie 中被杀死时,服务也会被杀死【英文标题】:Service also gets killed whenever App is killed in android pie 【发布时间】:2019-11-17 12:36:03 【问题描述】:

我正在通过创建一个 android 应用来学习 Android 编程。但是每当我杀死应用程序服务时也会被杀死。我正在使用JobIntentService。使该应用在后台运行。

JobIntentService 类

public class BackGroundDistanceCalculate extends JobIntentService 

    final public static String TAG = "BackGroundDistance";

    static void enqueueWork(Context context, Intent job) 
        enqueueWork(context, BackGroundDistanceCalculate.class, 1, job);
    

    @Override
    public void onCreate() 
        super.onCreate();
        Log.d(TAG, "Service Start");
    

    @Override
    protected void onHandleWork(@NonNull Intent intent) 
        Log.d(TAG, "Execution Started");

        int i=0;

        for(i=0; i<1000; i++) 
            SystemClock.sleep(1000);
        
    

    @Override
    public boolean onStopCurrentWork() 
        Log.d(TAG,"Now It's Stopped");
        return super.onStopCurrentWork();
    

    @Override
    public void onDestroy() 
        Log.d(TAG,"Now It's Destroyed");
        super.onDestroy();
    

MainActivity

Intent backCheck = new Intent(MapsActivity.this, BackGroundDistanceCalculate.class);
BackGroundDistanceCalculate.enqueueWork(this, backCheck);

创建此意图以在 onCreateMethod 中启动 Activity

清单

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<service
    android:name=".BackGroundDistanceCalculate"
    android:permission="android.permission.BIND_JOB_SERVICE" />

即使应用程序被终止,我可以进行哪些更改以使服务成功运行?提前致谢。

【问题讨论】:

【参考方案1】:

你需要将你的服务迁移到前台服务或至少显示一个持续的通知,因为从 android 8.0 开始,应用程序无法在不让用户知道的情况下运行后台服务。如果你想在没有通知的情况下进行,一种方法是迁移您对无障碍服务Create accessibility service 的服务。 想做的话可以参考这个链接。

【讨论】:

【参考方案2】:

使用不可关闭的通知启动前台服务

【讨论】:

阅读有关后台服务 android 8 及更高版本的更改developer.android.com/about/versions/oreo/android-8.0-changes

以上是关于每当 App 在 android pie 中被杀死时,服务也会被杀死的主要内容,如果未能解决你的问题,请参考以下文章

Android启动APP时黑屏白屏

Android启动APP时黑屏白屏

每当设置一个可移动的按钮时,它就不会在android中被点击

如何解决 GPS 在后台 android Pie 中自动关闭?

每当应用程序被杀死时服务停止

Android app主动杀死进程并重启