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