[英]Safe for inner AsyncTask to access outer Activity class private member fields?
对于Android AsyncTask来说,在AsyncTask.doInBackground()中读取Activity的私有成员字段是Activity的内部类是否安全? 提前致谢。
一般来说,没有。 如果活动正在进行配置更改并且正在销毁并重新创建,则后台线程将与错误的实例通信,这可能会给您带来问题。
理想情况下, AsyncTask
的doInBackground()
应该能够独立于其启动组件(活动,服务等)运行。 我建议你在AsyncTask
上创建一个构造函数,然后传入所需的东西。 或者,让AsyncTask
由使用setRetainInstance()
的动态片段管理,在这种情况下(AFAIK),任务访问片段的私有数据成员应该是安全的,因为片段不会去任何地方。
当内部类访问封闭类的私有成员(字段或函数)时,编译器将为这些成员生成访问器函数。 这将破坏封装,有些人认为这是好事还是坏事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.