jim*_*jim 8 android android-intent
在广播接收器中,我想启动我的应用程序(Activity)并传入一些数据.
我的问题是额外的东西似乎没有延续到活动中.我试图获取onNewIntent(Intent i)函数内的数据.
有任何想法吗?
这是我目前在BroadcastReceiver中的尝试:
Intent intSlider = new Intent();
intSlider.setClass(UAirship.shared().getApplicationContext(), SliderMenuActivity.class);
intSlider.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intSlider.putExtra("action", ScreensEnum.Object);
intSlider.putExtra("objectId", objectId);
intSlider.putExtra("objectCode", objectCode);
intSlider.putExtra("userId", userId);
UAirship.shared().getApplicationContext().startActivity(intSlider);
Run Code Online (Sandbox Code Playgroud)
编辑 - 添加了onNewIntent()和onCreate()中使用的代码
onCreate()当应用程序当前未运行时,以下代码非常有用.当应用程序已经运行时,相同的代码不起作用(即没有额外的onNewIntent()功能).
Intent intent = getIntent();
if(intent.hasExtra("objectId")) {
loadDetail(intent.getStringExtra("objectId"), "2w232");
}
Run Code Online (Sandbox Code Playgroud)
从文档中摘录
如果活动在其包中将 launchMode 设置为“singleTop”,或者客户端在调用 startActivity(Intent) 时使用 FLAG_ACTIVITY_SINGLE_TOP 标志,则会调用此方法。在任何一种情况下,当活动在活动堆栈顶部重新启动而不是启动活动的新实例时,将使用用于重新启动的 Intent 在现有实例上调用 onNewIntent()它。
活动在收到新意图之前始终会暂停,因此您可以在此方法之后调用 onResume()。
请注意,getIntent() 仍然返回原始 Intent。您可以使用 setIntent(Intent) 将其更新为这个新的 Intent。
我认为最后一段解释了你的问题。
| 归档时间: |
|
| 查看次数: |
4061 次 |
| 最近记录: |