我正在处理两个不同的Android应用程序。
Application1:从USB NFC读卡器读取数据 Application2:将数据写入USB NFC读卡器
我可以管理所有读写内容以及USB NFC Reader \ Write的注册\打开。 问题是当我在这两个应用程序之间切换时。
我将请求权限和registerReceiver放在应用程序的onStart()方法中。
protected void onStart() {
mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(
Config.ACTION_USB_PERMISSION), 0);
filter = new IntentFilter();
filter.addAction(Config.ACTION_USB_PERMISSION);
registerReceiver(mReceiver, filter);
for (UsbDevice device : mManager.getDeviceList().values()) {
if (Config.mReader.isSupported(device)) {
mManager.requestPermission(device, mPermissionIntent);
}
}
super.onStart();
}
两个应用程序的onStop()方法中的unregisterReceiver:
protected void onStop() {
if (mReceiver != null) {
try {
Config.mReader.close();
unregisterReceiver(mReceiver);
} catch (Exception e) {
Utils.log("error");
}
}
super.onStop();
}
如果我执行此操作:
一切正常。
如果我使用show application stack按钮 看起来Application1不能在Application2的onStart()方法之前执行onStop()方法,导致Application1和Application1都控制USB Reader。
我完全错了吗?
答案 0 :(得分:0)
为了解决我自己的问题,我这样做了:
我尝试将注册放在onPause()方法中,但是这样,当提示用户确认权限时,提示窗口显示2次(这是与Activity生命周期相关的正常行为)和注册执行两次。
按照我的方式,注册和权限过程执行一次,并且在注册其他应用程序之前及时执行取消注册(在onPause()方法中)。
希望这可以提供帮助。