从窗口小部件创建时,如何避免多个Activity实例?

时间:2014-06-26 08:44:03

标签: android android-activity android-widget instance

我想在我的小部件中按下按钮时启动我的应用程序\活动。

我正在使用此代码:

    Intent launchApp = context.getPackageManager()


        Intent launchApp = context.getPackageManager()
                .getLaunchIntentForPackage("com.sexy.code");
        launchApp.setData(Uri.parse(listItemClickIntent
                .toUri(Intent.URI_INTENT_SCHEME)));
        pIntent = PendingIntent.getActivity(context, 0, launchApp,
                PendingIntent.FLAG_UPDATE_CURRENT);

我的问题是在我的应用程序已经在后台运行的情况下所以一切看起来都没问题,直到我关闭那个打开的活动并发现它背后的另一个活动。这就像我需要两次退出应用程序。

我该如何避免这种情况?

2 个答案:

答案 0 :(得分:1)

试试这个:

launchApp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

来自FLAG_ACTIVITY_CLEAR_TOP的文档:

  

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在在最前面)作为新意图的旧活动。

此标志也可以与FLAG_ACTIVITY_NEW_TASK结合使用,如:

launchApp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
                   Intent.FLAG_ACTIVITY_NEW_TASK);

您也可以单独使用它们,具体取决于您所希望的行为。

答案 1 :(得分:0)

使用启动模式标志怎么样:

android:launchMode="singleTask"

您的活动应如下所示:

 <activity
            android:name=".YourActivity"
            android:launchMode="singleTask"
            android:configChanges="orientation|screenSize" >