android - 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+ 中是正常的?
解决方案
推荐阅读
- string - 如何在 Robot Framework 中搜索空字符串/比较两个字符串
- android - onDraw 获取画线的宽度
- html - iframe 中的 pdf 显示方式因浏览器而异
- matlab - MATLAB 结构似乎很慢
- angular - Angular 5 儿童路由器插座不起作用
- python - 使用 seaborn 的密度图
- directx - 为什么精灵渲染对象?
- angular - Firestore 在订阅之外获取 UID
- python - 如何在熊猫数组python的每个元素上应用一个函数
- python-3.x - plot_decision_regions 错误“当 X 具有超过 2 个训练特征时,必须提供填充值。”