我们正在开发NFC标签安卓应用程序,它正常工作50%,其余时间我们在下面的试用版块中获得NFC服务死机异常:
场景是我们第一次连接到nfc Tag并发送数据,它总能正常工作。 然后我们不要移动手机,1-2秒后我们再次尝试连接到nfc标签(如果没有连接)发送数据,30%的时间我们得到NFC服务死机异常它直到我们禁用并启用移动设备的NFC才会启动。
Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY
+ Process.THREAD_PRIORITY_MORE_FAVORABLE); //first line of doInBackground()
if(((ArrayList<Byte>) params[0]).size()<=0){
return "No image selected!";
}
NfcA nfcaTag = (NfcA) params[2];
try{
nfcaTag = NfcA.get(tag);
if (!nfcaTag.isConnected()){
nfcaTag.connect(); //this is line 175 MainActivity
}
try {
nfcaTag.close();
}
例外:
NFC service dead
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:622)
at android.nfc.INfcTag$Stub$Proxy.connect(INfcTag.java:285)
at android.nfc.tech.BasicTagTechnology.connect(BasicTagTechnology.java:73)
at android.nfc.tech.NfcA.connect(NfcA.java)
at de.silab.nfc.vistagnfcappv1.MainActivity$2.onClick(MainActivity.java:175)
at android.view.View.performClick(View.java:5723)
at android.view.View$PerformClick.run(View.java:22689)
at android.os.Handler.handleCallback(Handler.java:836)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6361)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
有没有办法解决这个问题。我们长期以来一直困在这里。 以及通过捕获此异常重新启动NFCAdapter / nfc服务的任何方法吗?
答案 0 :(得分:1)
你的nfcaTag的托管过程已经死了。它已经close()
'了。您的第一步应该是通过将关于变量的信息记录到控制台来调试,以查看是否有异常。
我发现close()
nfcaTag
connect()
之后nfcaTag
我发现它很奇怪。也许这两个陈述有冲突?
另外,请考虑为什么初始化NfcA.get(tag)
只是为了在下一个try语句中立即更改它。
您的NfcA
偶尔会返回一个空tag
个对象吗? 'mongo' is not recognized as an internal or external command,
operable program or batch file.
偶尔会为空吗?您需要测试每个变量,尤其是您在问题中未完全分享的变量。