intent-filter android restart app if app running



我正在编写一个使用串行端口的应用程序。

这是我的XML的样子

<application>
...
<activity>
...
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>

<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />

</activity>        
</application>

连接usb设备时,智能手机提示我选择默认应用程序。

我允许使用它,并记住选择。

但是如果我在应用程序运行时切换usb设备,那么当连接时,应用程序将重新启动…

如何避免这种情况?

我期待以下行为。

  1. 如果应用程序没有运行,那么当连接时,它启动

  2. 如果应用程序正在运行,那么当连接时,应用程序继续工作,但会收到有关连接的通知。

添加android:launchMode="singleTop"属性设置为关联的活动

<application>
...
<activity>
...
android:launchMode="singleTop"
...
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>

<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />

</activity>        
</application>

最新更新