2012-12-05 46 views
0

我的应用从IntentService创建Notification。点击时,Notification打开Activity类型的MainActivityMainActivity'sonCreate()每次点击新的Notification时都会调用方法,而不管是否已创建MainActivity的实例。点击Notification总是会创建一个替换旧的实例。仅当尚未创建活动时,如何从活动通知创建活动?

只有当活动不存在时,才有办法拨打onCreate()onNewIntent()如果MainActivity已经存在(或其他适当的方法)?

Notification正在创建这样的:

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(com.exampleapp.myclient.R.drawable.dummy_notification_icon, "Notification!", System.currentTimeMillis()); 
    Intent notificationIntent = new Intent(this, MainActivity.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); 
    notification.setLatestEventInfo(context, notificationTitle, "test", pendingIntent); 
    notificationManager.notify(1, notification); 

MainActivity在清单:

<activity android:name="com.exampleapp.myclient.MainActivity" 
    singleTop="true"> 
</activity> 

回答

2

您只需在清单中查找android:launchmode属性。你的情况应该设置为singleTask。然后你将能够处理onNewIntent();,你将只有1个实例。

+0

谢谢。 singleTask和singleInstance launchMode有什么不同? –

+0

@PierreRymiortz看这里:http://stackoverflow.com/a/3220375/969325 – Warpzit

+0

@PierreRymiortz你也可以访问有关android:launchmode – Warpzit

3

您可以设置活动为singleInstance在应用程序的manifest当活动再次lauched将调用onCreate()方法而不是调用onNewIntent()。在那里你可以决定下一步该做什么。

+0

感谢您的帮助。 +1。 –