简述对Activity中onNewIntent()方法的认识 ?
参考答案:
onNewIntent(Intent intent)
是 Android 中 Activity
类的一个回调方法。当活动(Activity)已经在前台运行时,系统会调用这个方法,将一个新的 Intent 对象传递给这个活动。这通常发生在单例活动(singleTask 或 singleInstance 启动模式的活动)被再次启动时,或者当使用通知(Notification)来启动一个已经在运行的活动时。
onNewIntent()
方法的主要用途是允许活动处理新的 Intent,而不必重新创建活动实例。这在某些情况下非常有用,比如你想保留活动的当前状态,但又需要处理新的数据或动作。
onNewIntent()
的使用方式如下:
- 覆盖方法:首先,你需要在你的活动中覆盖
onNewIntent()
方法。 - 处理 Intent:在
onNewIntent()
方法中,你可以获取并处理传递进来的新 Intent。你可以从 Intent 中提取数据,并执行相应的操作。 - 更新 UI:如果新的 Intent 需要更新活动的用户界面,你可以在
onNewIntent()
方法中执行必要的 UI 更新操作。
下面是一个简单的示例:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// 获取新的 Intent
setIntent(intent); // 可选:将新的 Intent 设置为活动的 Intent
// 从 Intent 中提取数据
String data = intent.getStringExtra("key");
// 根据数据执行操作或更新 UI
// ...
}
请注意,如果你需要在 onNewIntent()
方法中更新 UI,并且你的活动处于暂停或停止状态,你可能需要在 onResume()
方法中执行进一步的 UI 更新操作,以确保 UI 正确地反映了新的 Intent 数据。
此外,当活动通过 startActivityForResult()
启动时,返回的 Intent 不会通过 onNewIntent()
传递。相反,返回的 Intent 会传递给启动活动的 onActivityResult()
方法。