我们正在开发一款NFC标签的Android应用,其正常运行的概率为50%。在以下尝试块中,其余时间我们会收到NFC服务死亡异常:
情况是这样的,我们第一次连接到NFC标签并发送数据时,它总是正常工作的。 然后,如果没有断开连接,经过1-2秒后,我们再次尝试连接NFC标签(如果未连接)以发送数据,30%的时间我们会遇到NFC服务死亡异常,除非我们禁用并启用手机的NFC,否则它将无法启动。
有没有办法解决这个问题?我们已经卡在这里很长时间了。有没有通过捕获异常来重新启动NFCAdapter/nfc服务的方法?
情况是这样的,我们第一次连接到NFC标签并发送数据时,它总是正常工作的。 然后,如果没有断开连接,经过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服务的方法?