gpt4 book ai didi

android - 我应该在长时间运行的 AsyncTask 中使用 getApplicationContext 还是 Activity.this

转载 作者:IT王子 更新时间:2023-10-28 23:59:06 25 4
gpt4 key购买 nike

我有一个长时间运行的异步任务,它将一些数据发送到我的服务器然后停止。整个过程可能涉及一些请求和响应。我必须从数据库中读取数据,发送它并处理响应并相应地更新我的数据库。我正在使用内容提供程序从数据库中读取和更新数据。

现在要使用内容提供程序,我必须在上下文中调用 getContentResolver() 方法。所以我想知道我是否必须使用 getApplicationContext 或只是将 Activity.this 传递给我的方法。

我看到了一些帖子 like this解释两者之间的区别,在大多数情况下,他们建议我们尽可能不要使用 getApplicationContext。虽然我不希望我的 AsyncTaskActivity 被销毁或方向改变时丢失 Activity.this 的上下文。所以我想知道我是否可以在我的情况下使用 getApplicationContext 或者使用 Activity.this 符合我的要求。

最佳答案

使用每个选项都是有原因的。

当您使用上下文来修改 UI 时,您应该使用 Activity 上下文,因为在某些情况下使用应用程序上下文可能会导致异常(as described herehere )。比如下面这种情况:

TextView senderNameTextView = new TextView(getApplicationContext());

当你在跨Activity使用中使用上下文时,你不应该将Activity上下文绑定(bind)到 Action ,因为这样即使Activity被销毁,它也不会被垃圾回收,因为它仍然是从运行任务。在这些情况下,您应该使用应用程序上下文。见 the article in Android Developer's site (由 Romain Guy 撰写)了解更多详情。

如果你只使用上下文调用getContentResolver,你应该使用Application上下文。

关于android - 我应该在长时间运行的 AsyncTask 中使用 getApplicationContext 还是 Activity.this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9122627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com