问题
一个常见的场景:fragment在onViewCreated()
里执行一个任务(AsyncTask)加载一些数据,任务没有完成时,用户切换到其他界面,这时如果在代码里调用了getActivity()
方法,得到的将是空值。
这是一个在本地不容易发现的问题,但通过在线异常报告(例如bugly或友盟)容易发现。
解决方法
同时采取以下两项措施:
- 在任务的
doInBackground()
的一开始就获取context,而不是在每处都是用getActivity()
获取; - 在
onStop()
或onDetach()
方法里取消正在执行的任务以避免onPostExecute()
被继续执行。
参考资料
getActivity() returns null in Fragment function
欢迎转载
请保留原始链接:https://bjzhanghao.com/p/2247
请保留原始链接:https://bjzhanghao.com/p/2247