Android 防止webview活动中出现多个实例

Android 防止webview活动中出现多个实例,android,webview,push-notification,Android,Webview,Push Notification,我有一个webview活动,其中的url由通知服务更新。单击通知时,每次都会创建新活动以加载更改的URL。这可以通过在manifiest中添加android:launchMode=“singleTask”来防止 如果每次单击通知时都创建了一个新的活动,则会使我完全更改内容。但我希望避免每次单击通知时都创建一个新活动(或者在idk中创建一个视图?)。如果我在清单中添加android:launchMode=“singleTask”,它会给我带来一个副作用,即如果在现有打开的webview活动中收到通

我有一个webview活动,其中的url由通知服务更新。单击通知时,每次都会创建新活动以加载更改的URL。这可以通过在manifiest中添加android:launchMode=“singleTask”来防止

如果每次单击通知时都创建了一个新的活动,则会使我完全更改内容。但我希望避免每次单击通知时都创建一个新活动(或者在idk中创建一个视图?)。如果我在清单中添加
android:launchMode=“singleTask”
,它会给我带来一个副作用,即如果在现有打开的webview活动中收到通知,它不会重定向到更改的URL

未决通知意图:

  NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    if (isMessage) {
        Intent intent = new Intent(this, MiscDisplay.class);
         intent.putExtra("start_url", url);
        intent.setAction("NOTIFICATION_URL_ACTION");
        PendingIntent resultPendingIntent = PendingIntent.getActivity(getApplicationContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        mBuilder.extend(new WearableExtender().addAction(message));
        mBuilder.setOngoing(false);
        mBuilder.setSmallIcon(R.mipmap.ic_launcher);
        mBuilder.setOnlyAlertOnce(true);
        Notification note = mBuilder.build();
        mNotificationManager.notify(1, note);

    } else {
        mBuilder.setSmallIcon(R.mipmap.ic_launcher);
        Intent intent = new Intent(this, MiscDisplay.class);
        intent.putExtra("start_url", url);
        intent.setAction("NOTIFICATION_URL_ACTION");
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(MiscDisplay.class);
        stackBuilder.addNextIntent(intent);
        PendingIntent resultPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        mBuilder.extend(new NotificationCompat.WearableExtender().addAction(action));
        mBuilder.setOngoing(false);
        Notification note = mBuilder.build();
        mNotificationManager.notify(0, note);
我想要什么?

我希望避免每次单击新通知时为创建新活动

请帮忙! 多谢各位

Intent activityIntent = new Intent(context, MainActivity.class);activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(activityIntent);
在调用活动之前使用此标志 解决方案二: 在舱单中:

 <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:name=".AL"

public class AL extends Application {
    public static Boolean isActivityRunnig=false;
 @Override
    public void onCreate() 
{
        super.onCreate();
}
当点击通知时,您可以检查falg:

if(!AL.isActivityRunnig)
   startactivity(new Intent(context,YourActivity.class));

如果要重新加载新url,请在webview活动中重写方法onNewIntent(),并使用新参数执行操作。

请粘贴挂起的意图代码。您正在使用它创建通知。每次单击notif时更改
webview.loadUrl上的链接有什么用?这是否没有为您加载所需的页面?@Akeshwar没有。我想您可以尝试使用广播更新您的Web视图的URL信息。@Saurabhhare添加了代码。我已经添加了您的代码,这也会导致在收到新通知时启动多个活动实例。您可以定义一个静态布尔变量,用于感知活动状态,并在onresume()中设置true,在onPause()中设置false方法。在开始新活动之前,请检查此变量。请注意,您应该定义一个单音类并从应用程序类扩展它。
if(!AL.isActivityRunnig)
   startactivity(new Intent(context,YourActivity.class));
Intent intent = new Intent(....this, ....class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("...", ...);
startActivity(intent);