1804-11 09:43:24.482 22968 22968 E CrashHandler: In thread: Thread[main,5,main]
1904-11 09:43:24.482 22968 22968 E CrashHandler: UncaughtException detected: java.lang.IllegalStateException: Failure reading AssistStructure data: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
2004-11 09:43:24.482 22968 22968 E CrashHandler: at android.os.Parcel.readException(Parcel.java:1953)
2104-11 09:43:24.482 22968 22968 E CrashHandler: at android.os.Parcel.readException(Parcel.java:1891)
2204-11 09:43:24.482 22968 22968 E CrashHandler: at android.app.IActivityManager$Stub$Proxy.reportAssistContextExtras(IActivityManager.java:7637)
2304-11 09:43:24.482 22968 22968 E CrashHandler: at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3483)
2404-11 09:43:24.482 22968 22968 E CrashHandler: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2125)
2504-11 09:43:24.482 22968 22968 E CrashHandler: at android.os.Handler.dispatchMessage(Handler.java:108) …
Run Code Online (Sandbox Code Playgroud) 我们使用 NFC 标签作为进出的停车票。在每个入口处,标签上都会写入一些数据,而在出口处,该数据会验证车辆的出口。
\n\n部分车辆进出后,NfcService失效,智能手机无法检测到NFC标签。设备需要重新启动才能重新启动 NfcService,然后设备再次开始正常工作。
\n\n此错误是随机出现的,我们无法在开发环境中重现此错误,但我们在停车场出入口安装的设备上多次观察到此问题。
\n\n\n\n当我们调试这个问题时,我们能够以某种方式管理上述日志。
\n\n我们尝试了不同的更改,例如使用enableReaderMode
而不是enableForegroundDispatch
,但问题仍然存在。
public void enableReaderMode() {\n try {\n Log.d("WTF", "Enabling reader mode");\n NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);\n\n if (nfc != null) {\n int flags = NfcAdapter.FLAG_READER_NFC_A ;\n\n nfc.enableReaderMode(this, new NfcAdapter.ReaderCallback() {\n @Override\n public void onTagDiscovered(Tag tag) {\n runOnUiThread(new Runnable() {\n @Override\n public void run() {\n Log.d("WTF", "Tag discovered");\n String uid = ByteArrayToHexString(tag.getId());\n Toast.makeText(MainActivity.this, getString(R.string.message_tag_detected), Toast.LENGTH_SHORT).show();\n Ndef ndef = Ndef.get(tag);\n\n if (isNFCDialogDisplayed) {\n\n if (isWrite) {\n\n …
Run Code Online (Sandbox Code Playgroud) 我有以下代码片段:
public static String getAppVersion(Context context) {
String versionName = null;
try {
versionName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName; //This is the problematic line
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return versionName;
}
Run Code Online (Sandbox Code Playgroud)
现在,根据 Crashlytics 的说法,应用程序崩溃时出现了以下异常:
Caused by android.os.DeadObjectException
com.tawkon.data.lib.util.ParameterUtils.getAppVersion
android.os.BinderProxy.transactNative (Binder.java)
android.os.BinderProxy.transact (Binder.java:503)
android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo (IPackageManager.java:2684)
android.app.ApplicationPackageManager.getPackageInfo (ApplicationPackageManager.java:193)
com.tawkon.data.lib.util.ParameterUtils.getAppVersion (ParameterUtils.java:44)
com.tawkon.data.lib.helper.analytics.NetworkRequestHelper.generateHttpRequest (NetworkRequestHelper.java:28)
com.tawkon.data.lib.service.DataThroughputScanJobIntentService$2.onTestFinished (DataThroughputScanJobIntentService.java:342)
com.tawkon.data.lib.collector.DataThroughputManager$1.run (DataThroughputManager.java:171)
Run Code Online (Sandbox Code Playgroud)
设备规格为三星,操作系统为 6。
就我而言,这似乎是一次罕见的崩溃。无论如何,什么可能导致这种情况发生?我怎样才能防止它再次发生?