访问或修改 AsyncTask 中的实例变量

发布于 2025-01-02 14:13:19 字数 91 浏览 1 评论 0原文

假设我有一个名为 A 的内部类扩展了 asynctask,而外部类扩展了 Activity B。 A中的代码访问或修改Activity B中的实例变量是否是线程安全的?

Suppose I have a innerclass extends asynctask called A and the outerclass extends Activity B.
Is it thread-safe that the code in A access or modify the instance variable in Activity B?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

和影子一齐双人舞 2025-01-09 14:13:19

不,AsyncTask 在单独的线程中运行,因此您必须如果在 AsyncTask 运行时 Activity 和 AsyncTask 共享状态(在本例中为实例变量),则执行通常的线程同步。

一般来说,为了简单起见,您可以实现 onPublishProgress()onPostExecute() 将状态从 AsyncTask 发布到 Activity,因为这两个方法都发布到 UI 线程中运行。

No, an AsyncTask runs in a separate thread so you'll have to do the usual thread synchronization if the Activity and AsyncTask share state (in this case instance variables) while the AsyncTask is running.

Generally, to make it easy, you implement onPublishProgress() and onPostExecute() to publish state from the AsyncTask to the Activity, since both methods are posted to run in the UI thread.

半夏半凉 2025-01-09 14:13:19

如果您直接访问实例而没有synchronize,那么不行,该代码不是线程安全。
您必须使用 synchronize 来实现此目的,或者只需从 AsyncTaskonPublishProggress() 方法访问实例。

If you access the instance directly without synchronize, then no, the code is not thread safe.
You have to use synchronize for that or just simply access the instance from onPublishProggress() method of AsyncTask.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文