intent-filter android重启应用程序,如果应用程序正在运行

2cmtqfgy  于 2022-12-31  发布在  Android
关注(0)|答案(1)|浏览(151)

我正在编写一个使用串行端口的应用程序。
这是我的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.如果应用程序未运行,则在连接时启动
1.如果应用程序正在运行,则当连接时,应用程序将继续工作,但会收到有关连接的通知。

rxztt3cl

rxztt3cl1#

将android:launchMode=“singleTop”属性添加到关联的Activity

<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>

相关问题