打开通知时如何更新活动

时间:2019-03-27 13:25:27

标签: java android

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

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);
                }
}

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

3 个答案:

答案 0 :(得分:1)


您只需要向 singleTask 声明launchMode,以确保不会打开多个相同的屏幕。

有四种活动启动模式。他们是:
1.标准
2. SingleTop
3. SingleTask
4. SingleInstance

请参考此链接Click here

<activity android:name="YOUR_SPLASH_ACTIVITY"
            android:launchMode="singleTask"

            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Java代码中,您只需覆盖 onNewIntent 方法,即可刷新activity

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    /**
     * HERE YOU JUST REFRESH , YOUR ACTIVITY 
     */

}

答案 1 :(得分:0)

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

  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");
  }

答案 2 :(得分:0)

最好的方法是利用“活动”中的onNewIntent(Intent)方法。

您可以使用此方法的 Intent 参数来获取 Intent Extras ,因为getIntent()会首先给出启动活动的Intent。

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
        }
    }
}