在安卓Pie系统中,当应用程序被杀死时,该应用程序的服务也会被终止。

3
我正在通过创建一个安卓应用程序来学习安卓编程。但是每当我关闭应用程序时,服务也会被关闭。我正在使用 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" />

我应该做哪些更改,才能使服务在应用程序被杀死时仍然成功运行?提前感谢。

2个回答

1

你需要将服务迁移到前台服务,或者至少显示一个持续的通知,因为从Android 8.0开始,应用程序不能在未经用户许可的情况下运行后台服务。如果仍然不想使用通知的话,一种方法是将服务迁移到辅助功能服务创建辅助功能服务。如果需要,可以参考此链接进行创建。


0

使用不可取消的通知启动前台服务


阅读有关 Android 8 及更高版本后台服务更改的内容,请访问 https://developer.android.com/about/versions/oreo/android-8.0-changes。 - Ashok Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接