如何防止应用程序打开重复

时间:2014-02-25 02:39:41

标签: android

我使用以下代码将图标添加到Notification状态,用户可以单击图标打开app ui.SMSMain.class,如果用户单击图标,将打开两个ui.SMSMain.class应用程序两次。 我希望应用程序只能打开一次,我该怎么办?

private static void ShowNotification() {        
        NotificationManager notificationManager = (NotificationManager) myContext.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.smsforward,
                                    myContext.getString(R.string.app_name), 
                                    System.currentTimeMillis());

    notification.flags |= Notification.FLAG_ONGOING_EVENT; 
    notification.flags |= Notification.FLAG_NO_CLEAR; 
    CharSequence contentTitle =myContext.getString(R.string.NotificationTitle); 
    CharSequence contentText = myContext.getString(R.string.NotificationContent); 

    Intent notificationIntent = new Intent(myContext, ui.SMSMain.class); 
    PendingIntent contentItent = PendingIntent.getActivity(myContext, 0,
            notificationIntent, 0);

    notification.setLatestEventInfo(myContext, contentTitle, contentText,contentItent);
    notificationManager.notify(NotificationID, notification);
}

1 个答案:

答案 0 :(得分:1)

在清单中将您的活动添加launchMode属性为SingleTop

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

这只允许活动的一个实例,最好在pendingIntent中使用标记PendingIntent.FLAG_UPDATE_CURRENT

PendingIntent contentItent = PendingIntent.getActivity(myContext, 0,
        notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

但是,我不确定0实际是否引用UPDATE_CURRENT

<强>更新

您可能需要根据需要在singleTop或singleTask中进行选择

for singleTop:如果活动实例已存在于当前任务的顶部且系统路由意图此活动,则不会创建新实例

for singleTask:将始终创建一个新任务,并将新实例作为根任务推送到任务。但是,如果任何任务中存在任何活动实例,系统会通过onNewIntent()方法调用将意图路由到该活动实例。

了解有关LaunchMode的更多information

我相信singleTop更适合你的问题。