Intent详解及相关问题
2017-12-27 本文已影响0人
电梯里漫舞
1. 传递大小限制 Serializable对象
应该在让Serializable对象的字段类型都实现Serializable接口
2. 传递数据大小限制
Intent在传递数据时,大小限制在1MB。
0-512KB:正常
512-1024KB:出错,闪退。
大于1024KB:报错TransactionTooLargeException。
解决方法:
1)将文件写到临时文件或者数据库中,跳转后在读取。
缺点:由于读写文件较为耗时导致程序运行效率较低。
2)将文件保存在单例或者静态类中,跳转后再去读取。
缺点:在不同进程中无法共享,破坏了程序的独立性。
3. singleTask模式的Activity启动
程序逻辑要求把某Activity设置为singleTask模式启动,当Activity已经启动过之后,再通过Intent来启动时,调用getIntent方法得到的还是旧的Intent对象。
再启动时调用的方法为:onNewIntent->onRestart->onStart->onResume
为singleTask模式Activity在多次启动时,会调用onNewIntent(Intent intent)方法,在方法中的intent即为后来传递过来的。
解决方法:
1)对onCreate中的getIntent()和onNewIntent中的intent做相同的处理。
2)在onNewIntent中调用setIntent()方法,再次调用getIntent时就会返回新的Intent对象