我有一个长时间运行的异步任务,它将一些数据发送到我的服务器,然后停止.整个过程可能涉及一些请求和响应.我必须从数据库中读取数据,发送它并处理响应并相应地更新我的数据库.我正在使用内容提供程序从数据库中读取和更新数据.
现在要使用Content Provider,我必须getContentResolver()在上下文中调用该方法.所以我想知道我是否必须使用getApplicationContext或只是传递Activity.this给我的方法.
我看了几个帖子是这样解释两个和大部分之间的区别,他们劝告我们不要使用getApplicationContext,如果可能的.虽然我不希望我AsyncTask失去从被破坏或方向改变Activity.this时的背景Activity.所以我想知道我是否可以使用getApplicationContext我的情况或使用Activity.this符合我的要求.
MBy*_*ByD 85
有理由使用每个选项.
当您使用上下文来修改UI时,您应该使用Activity上下文,因为在某些情况下使用应用程序上下文可能会导致异常(如此处和此处所述).例如在以下情况中:
TextView senderNameTextView = new TextView(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
在交叉活动使用中使用上下文时,不应将Activity上下文绑定到操作,因为即使活动被销毁,也不会对其进行垃圾收集,因为它仍然是从正在运行的任务中引用的.在这些情况下,您应该使用Application上下文.有关更多详细信息,请参阅Android Developer网站(由Romain Guy撰写)中的文章.
如果您只使用上下文来调用getContentResolver,则应使用Application上下文.
| 归档时间: |
|
| 查看次数: |
21267 次 |
| 最近记录: |