Background service在Android 10 java中销毁应用程序后20秒后停止

问题描述 投票:0回答:1

我有一个可在后台检测位置的应用。在具有android 9(api 28)或更低版本的设备中,它可以工作,但在android 10中,它会在20秒后停止

有一些代码

我如何称呼服务

Intent intent = new Intent(getApplicationContext(), GoogleService.class);
startService(intent);

主要活动

    @Override
    protected void onResume() {
        super.onResume();
        registerReceiver(broadcastReceiver, new IntentFilter(GoogleService.str_receiver));

    }

    @Override
    protected void onPause() {
        super.onPause();
        registerReceiver(broadcastReceiver, new IntentFilter(GoogleService.str_receiver));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        registerReceiver(broadcastReceiver, new IntentFilter(GoogleService.str_receiver));
    }

Google服务

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        mTimer = new Timer();
        mTimer.schedule(new TimerTaskToGetLocation(), 5, notify_interval);
        intent = new Intent(str_receiver);
    }
java android service background-process android-10.0
1个回答
1
投票

正如CommonsWare指出的那样,运行这样的后台服务将导致用户在较新版本的Android上离开您的应用后,系统将其杀死。

根据您尝试执行此操作的确切特征,您应该使用WorkManager(如果这是可延迟的,并且不需要每隔15分钟以上),或者使用带有通知的前台服务(如果您需要不断查询)。请参阅this guide from the Android documentation,以获取有关此处选项的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.