我正在处理通知,但遇到了问题。当我单击通知时,我已经打开了一个活动,我不想再次打开它,只需更新当前活动即可。
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);
}
}
有人可以告诉我单击通知时如何更新活动吗?
答案 0 :(得分:1)
您只需要向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
}
}
}