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

时间:2014-08-05 15:02:24

标签: android android-intent android-activity android-asynctask

我在我的主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>

onNewIntent被调用两次:

protected void onNewIntent(Intent intent) {


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

     // here is my code     

    }

}

为什么会这样?

1 个答案:

答案 0 :(得分:5)

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

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

我的Android 4.2.2设备存在同样的问题。在Android Emulator中观察到类似的行为。