为什么OnNewIntent()中的代码执行两次?

cha*_*han 2 android android-intent android-asynctask android-activity

singleTop在我的主要使用模式Activity.我在用SearchWidget

这对我来说很明显MainAcivity:

<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.SEARCH" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
</activity>
Run Code Online (Sandbox Code Playgroud)

onNewIntent 被叫两次:

protected void onNewIntent(Intent intent) {


    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {

     // here is my code     

    }

}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Beh*_*nam 5

您使用硬件键盘执行搜索吗?如果是,则双重执行是已知但从未修复的Android错误.

您可能希望尝试使用整数锁变量来避免双重执行.

我有一个Android 4.2.2设备有同样的问题.在Android Emulator中观察到类似的行为.