2013-05-28 27 views
0

我只是想使用我的应用程序小部件作为应用程序的快捷方式,我不想打开一个新的任务。 所以我用FLAG_ACTIVITY_BROUGHT_TO_FRONT标志是这样的:从Widget启动应用程序:没有影响FLAG_ACTIVITY_BROUGHT_TO_FRONT

 Intent configIntent = new Intent(context, MainActivity.class); 
     configIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
     PendingIntent configPendingIntent = PendingIntent.getActivity(
       context, 0, configIntent, 0); 
     views.setOnClickPendingIntent(R.id.widget, configPendingIntent); 

但不幸的是,每次我点击一个widget的新活动推出。

我错过了什么吗?

编辑:我也尝试:FLAG_ACTIVITY_REORDER_TO_FRONT

+0

如果你不希望一个新的任务,那么你正在寻找FLAG_ACTIVITY_CLEAR_TOP,如果活动是在堆栈中它会收到在'onNewIntent()'和'的onCreate(意图)'将不会被调用。 – AlexBcn

+0

我尝试了你的代码,并且还有一个活动的新实例... –

回答

0

我想尽标签悲惨地失败了......

我不得不用android:launchMode="singleInstance",使小部件启动我的活动在相同的状态不是用户离开它。

2

除了我说:

configIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

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

如果已宣布其推出模式为“多”(默认值),你有没有在同一组FLAG_ACTIVITY_SINGLE_TOP意图,那么它将被完成并重新创建;对于所有其他启动模式,或者如果设置了FLAG_ACTIVITY_SINGLE_TOP,则此Intent将被传递到当前实例的onNewIntent()。

API reference

+0

我尝试了你的代码,并且我仍然得到了同一活动的2个不同实例。这个小部件用onCreate ... –

+0

在你的清单中添加'android:launchMode =“singleTop”',如果它不起作用,我会在家看一个项目,因为我不得不处理类似的情景。 – AlexBcn

+0

我“+'编辑”您的答案,为亲切的帮助,并会尝试看看,如果singleTop比singleInstance有一些优势,因为结果将是相同的 –