在AsyncTask.doInBackground()中,Android的AsyncTask是否可以安全地读取Activity的私有成员字段?提前谢谢。
答案 0 :(得分:8)
一般来说,没有。如果活动正在进行配置更改并且正在销毁并重新创建,则后台线程将与错误的实例通信,这可能会给您带来问题。
理想情况下,doInBackground()
的{{1}}应该能够独立于其启动组件(活动,服务等)运行。我建议你在AsyncTask
上创建一个构造函数,并传递所需的内容。或者,让AsyncTask
由使用AsyncTask
的动态片段管理,在这种情况下(AFAIK),任务访问片段的私有数据成员应该是安全的,因为片段不会去任何地方。
答案 1 :(得分:0)
当内部类访问封闭类的私有成员(字段或函数)时,编译器将为这些成员生成访问器函数。这将破坏封装,有些人认为这是好事还是坏事。