设置Activity的启动模式为singleTask接收不到intent的解决方法+启动模式为standard时,onNewIntent未被调用
来源:互联网 发布:归来 知乎 编辑:程序博客网 时间:2024/05/22 12:35
-------- 情景重现
MainActivity的启动模式设置为singleTask
<activity android:name=".MainActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity2" android:launchMode="standard"></activity>
MainActivity打开MainActivity2 ; MainActivity2再打开MainActivity , 并用intent向MainActivity传值
public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate: 111111111"); initView(); } @Override protected void onNewIntent(Intent intent) {//在onStart之前被调用 super.onNewIntent(intent); Log.i(TAG, "onNewIntent: 111111111 intent param = " + intent.getStringExtra("key")); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart: 11111111111111111 intent param = " + getIntent().getStringExtra("key")); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume: 11111111111"); } private void initView() { TextView tvFinish = (TextView) findViewById(R.id.tv_finish); tvFinish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(getApplicationContext(), MainActivity2.class)); } }); }}
public class MainActivity2 extends AppCompatActivity { private static final String TAG = MainActivity2.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate: 22222222"); initView(); } private void initView() { TextView tvFinish = (TextView) findViewById(R.id.tv_finish); tvFinish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.putExtra("key", "value"); startActivity(intent); } }); }
结果 :
03-26 15:39:22.661 25903-25903/com.qingmu.onsaveinstancestate I/MainActivity: onNewIntent: 111111111 intent param = value03-26 15:39:22.661 25903-25903/com.qingmu.onsaveinstancestate I/MainActivity: onStart: 11111111111111111 intent param = null
在MainActivity的onStart方法里getIntent并没有获取到MainActivity2传递的intent值;
而在MainActivity的onNewIntent里获取到MainActivity2传递的Intent值。
--------- 由此问题得到结果,在onNewIntent方法里获取Intent值,并且onNewIntent在onStart之前被调用。
-------- 当MainActivity的启动模式设置为standard时,onNewIntent未被调用。这一点要注意。
0 0
- 设置Activity的启动模式为singleTask接收不到intent的解决方法+启动模式为standard时,onNewIntent未被调用
- activity开启一个启动模式为SingleTask的activity,intent传递数据为空的解决方法
- android 设置activity启动模式为singleTask时,intent的传值问题
- 设置Activity启动模式launchMode为singleTask的坑
- Activity设置为启动模式为singletask第二次进入activity getintent获取不到问题
- [Android]当Activity启动模式为singleTask时的生命周期
- 【Android】 Activity启动模式singleTask的数据传输 onNewIntent方法
- Activity以singleTask模式启动,intent获取到的值为null的解决办法
- Activity的启动模式以及onNewIntent(Intent intent)
- Activity的启动模式以及onNewIntent(Intent intent)
- Activity启动的四种模式:Standard,SingleTop,SingleTask,SingleInstance
- Activity的启动模式singleTask
- Activity以singleTask模式启动,intent传值的解决办法
- Activity以singleTask模式启动,intent传值的解决办法
- Intent传递数据与Activity启动模式singleTask的关系。
- Activity以singleTask模式启动,intent传值的解决办法
- Activity以singleTask模式启动,intent传值的解决办法
- Activity以singleTask模式启动,intent传值的解决办法
- lintcode——翻转链表
- rbac与auth权限认证的区别
- mybati缓存机制
- Performing stop of activity that is not resumed
- webservice接口调用OA方法
- 设置Activity的启动模式为singleTask接收不到intent的解决方法+启动模式为standard时,onNewIntent未被调用
- Python中的property, setter装饰器
- I
- k-d tree背诵用模板
- 机器学习系列博客
- lintcode——删除链表中的元素
- 简单轮播的实现
- JavaWeb图表插件的小研究
- .h头文件、 .lib库文件、 .dll动态链接库文件的关系