Java 如何在打开通知时更新活动

Java 如何在打开通知时更新活动,java,android,Java,Android,我正在处理通知,我遇到了一个问题。当我点击通知时,我已经打开了一个活动,我不想再打开它,只需更新当前活动即可 if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) { Intent pushNotification = null; if (NotificationType != 0 && NotificationType != 2 && Notif

我正在处理通知,我遇到了一个问题。当我点击通知时,我已经打开了一个活动,我不想再打开它,只需更新当前活动即可

if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
 Intent pushNotification = null;
                if (NotificationType != 0 && NotificationType != 2 && NotificationType != 5 && NotificationType != 26) {
                    pushNotification = new Intent(getApplication(), SplashScreen.class);
                    pushNotification.putExtra("NotificationType", NotificationType);
                    pushNotification.putExtra("ReferenceID", ReferenceID);
                    pushNotification.putExtra("NotificationID", ReferenceID);
                    pushNotification.putExtra("isread", ReferenceID);
                    showNotificationMessage(getApplicationContext(), title, message, time, pushNotification);
                } else if (NotificationType == 0 || NotificationType == 2 || NotificationType == 5 || NotificationType == 26) {
                    showNotificationMessageWithNoAction(getApplicationContext(), title, message, title, null);
                }
}

有人能告诉我在单击通知时如何更新活动吗?


您只需将
启动模式声明为单个任务,以确保不会打开多个相同的屏幕

活动有四种启动模式。它们是:
1.标准
2.单顶
3.单任务
4.单实例

请参考此链接


我不知道这是否是你需要的,但你可以做到

  finish();
  startActivity(getIntent());
让我知道你真正需要什么

编辑:

如果需要保持活动状态不变,可以这样做

  @Override
  public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putString("MyString", "Welcome back to Android");
 }
这将保存您的活动状态

然后像这样检索UI状态

  @Override
  public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    String myString = savedInstanceState.getString("MyString");
  }

最好的方法是使用活动的
onNewIntent(Intent)
方法

您可以使用此方法的Intent参数来获取Intent Extras,因为
getIntent()
将给出开始活动的意图

public class MainActivity extends Activity {
    public void onCreate(Bundle SavedInstanceState) {
    //Initial loading
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if(intent.getStringExtra("methodName").equals("myMethod")) {
            //Update the existing screen
        }
    }
}

你有没有检查过这个@SabbirAhmed我没有,但我不想完成并重新启动它。。。我正在寻找互动或类似的东西,可以更新我的活动,而无需重新启动。谢谢,我不想再次完成并重新启动它,因为我在活动开始时有太多的网络请求,这就是为什么。。。我正在寻找互动或类似的东西,可以更新我的活动,而无需重新启动。thank'sohh感谢添加此代码后所做的工作android:launchMode=“singleTask”和@Override protected void onNewIntent(Intent-Intent){if(Intent!=null){RefrenceId=Intent.getIntExtra(“ReferenceID”,0);}您还可以使用
Intent.hasExtra(“ReferenceID”)
,为了它…很高兴帮助你@MuhammadImran..继续快乐地编码
  @Override
  public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    String myString = savedInstanceState.getString("MyString");
  }
public class MainActivity extends Activity {
    public void onCreate(Bundle SavedInstanceState) {
    //Initial loading
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if(intent.getStringExtra("methodName").equals("myMethod")) {
            //Update the existing screen
        }
    }
}