首页 > 解决方案 > Google Play OBB 下载器库在 Android 8.0 上崩溃

问题描述

OBB 下载器库似乎使用 Context.startService(...) 在后台下载 OBB,但在 Android 8.0 上,如果应用程序本身在后台,这会导致崩溃。这个库注册了一个 BroadcastReceiver:

mConnReceiver = new InnerBroadcastReceiver(this);
IntentFilter intentFilter = new IntentFilter(
        ConnectivityManager.CONNECTIVITY_ACTION);
intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(mConnReceiver, intentFilter);

接收方:

private class InnerBroadcastReceiver extends BroadcastReceiver {
    final Service mService;

    InnerBroadcastReceiver(Service service) {
        mService = service;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        pollNetworkState();
        if (mStateChanged
                && !isServiceRunning()) {
            Log.d(Constants.TAG, "InnerBroadcastReceiver Called");
            Intent fileIntent = new Intent(context, mService.getClass());
            fileIntent.putExtra(EXTRA_PENDING_INTENT, mPendingIntent);
            // send a new intent to the service
            context.startService(fileIntent);
        }
    }
};

崩溃堆栈阶段: 下载器服务崩溃

那么,避免此类崩溃的首选方法是什么?或者这种用户体验在 Android 8.0+ 中是正常的?

标签: androidgoogle-playandroid-8.0-oreobackground-service

解决方案


推荐阅读