java - 每当应用程序在 android pie 中被杀死时,服务也会被杀死

标签 java android android-9.0-pie jobintentservice

我正在通过创建 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();
    }
}

主 Activity

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

创建此 Intent 以在 onCreateMethod 中启动 Activity

list

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

我可以做哪些更改来使服务即使在应用程序被终止时也能成功运行?提前致谢。

最佳答案

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

关于java - 每当应用程序在 android pie 中被杀死时,服务也会被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56927403/

相关文章:

java - 自定义 map <Object,Object> XmlAdapter

java hashmap键迭代

由于 com.google.android.gms.version 元数据导致的 Android 仪器测试错误

java - 在 Android 中使用 Native 的好处

android - 电话号码链接在 Android 9 上不起作用

java - Primefaces 从 Backing 调用 ConfirmDialog

java - Spring Hibernate 无法连接到名称中带有连字符的 SQL Server

Android "Support Screens"不工作?

java - Android 9 无法在 Android 外部公共(public)路径 ("storage/emulated/0/MyImages"中创建目录)

Java Android getContentResolver().query 特定相机文件夹以获取 Android API 级别 <= 28 设备中的光标