android编程需注意!(第一话)new fragment的悲剧

//本文会持续更新,希望大家能提出项目中遇到的问题和自己的观点与大家分享,让大家少走弯路。

//注意:提出的内容需要以 观点/问题--->原因--->解决方案--->扩展的方式编写


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


观点:直接new fragment的时候不要直接传参。for example: new  XXXFragment(arg);


原因:当系统资源紧缺的时候,部分fragment可能被销毁,这时fragment会重新执行onCreate方法,arg就会出现null的情况,可能造成app崩溃


解决方案:

1)使用setArguments方法传参

2)在onSaveInstanceState()方法中存储arg,这样做的话arg需要实现Serializable接口。


扩展: 使用Serializable进行串行化的优缺点:
    内建支持
    易于实现
    占用空间过大
    由于额外的开销导致速度变比较慢

你可能感兴趣的:(android编程需注意!(第一话)new fragment的悲剧)