首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于取消AsyncTask的ListAdapter生命周期和屏幕旋转

用于取消AsyncTask的ListAdapter生命周期和屏幕旋转
EN

Stack Overflow用户
提问于 2012-02-02 20:45:16
回答 2查看 675关注 0票数 0

我有一个异步任务,当视图通过onDestoryView()去定向时,我取消了这个任务。这个问题是我做了"downloader.cancel(true);“,它不会取消。实际上,它将返回false。目前,它引用ListAdapter来向其中添加项。但是,当我将屏幕转到横向时,在onPostExecute期间ListAdapter为空。我不知道ListAdapter什么时候变成空的。我已经尝试过onDestory和onDestoryView在ListAdapter变为null之前取消异步任务,但都不起作用。这是在ListFragment btw中。

目前,我只是检查asynctask中的适配器是否为空,但这真的很麻烦。我宁愿在ListAdapter为空之前取消任务。

有人知道在屏幕旋转过程中ListFragment的ListAdapter何时为空吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-03 01:17:17

取消AsyncTask并不会终止线程。您将在Thread的文档中看到stopdestroy等方法未实现。因此,一旦doInBackground方法开始执行,即使使用cancel(true)取消了任务,它也会一直运行到完成。您需要对其进行适当的编码。

票数 1
EN

Stack Overflow用户

发布于 2012-02-02 21:37:30

当屏幕方向改变时,默认行为是销毁活动并重新创建它。因此,将调用OnDestroy和OnCreate方法。您可以取消此行为,将此行添加到您的清单的活动中:

android:configChanges="keyboardHidden|orientation“

就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <activity
        android:name=".YourActivity"
        android:label="@string/app_name"
        android:configChanges="keyboardHidden|orientation" >

您还需要在activity类中添加方法onConfigurationChanged。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig); // tem que ter

    reconfiguraInterface();
}

在此之后,当方向更改时,将不会调用OnDestroy和OnCreate。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9119741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文