ui被销毁时访问网络的线程需要取消么?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

ui被销毁时访问网络的线程需要取消么?

2016-03-12 15:37:09 2316 2

假设有个新闻列表,打开之后会启动一个线程联网读取新闻json,要是数据还没有读取完,用户就把这个ui(activity或者viewcontroller)关闭或者按home键隐藏了app,那么请问在这种情况下该怎么处理这个线程?(应该就是俗称的幽灵线程问题吧)我搜了很多文章(android、ios),有几个大概的观点,这里列出来还请大神们指点下
1.用try..catch,如果网络线程的onsuccess里面有ui操作,就try..catch包围。
2.自己做过isDestory符,线程里判断
3.用Loader,不需要管这种事了(android)
4.用线程池,自己写一个也行,用个KV结构维护一个线程id表,onpause、ondestory或者viewdiddisapper等ui要销毁(隐藏)的时候将线程池内的线程销毁
5.在网络线程的onsuccess里加类似getActivity==null这样的判断
6.用订阅(Rxandroid或者ReactiveCocoa)不用管

取消 提交回答
全部回答(2)
  • 明弈
    2019-07-17 19:01:04

    最好取消。可以看下RAC的设计里面,disposebag

    0 0
  • 蛮大人123
    2019-07-17 19:01:04

    这个完全取决于实现的方式,比如你有一个网络线程访问网络,然后更新列表。界面销毁了,请问你是否还要在被销毁的界面更新列表?而你有一个网络线程访问网络,目的是同步本地数据,那么是否要在调用的界面被销毁时去中断线程?

    这些终究是开发者决定的,因为你需要线程活着,所以他才活着,你要关闭,那么他就关闭了。
    和功能的需求是相关的,比如你举的例子,列表还没读完,按了home键,那么网络线程还继续吗?
    这种销毁属于需要恢复的销毁,称之为不可见,不可见时通常会考虑继续访问网络,如果中断网络,那么等到界面可见了就有需要恢复网络访问,界面更新和网络访问就在一种平衡中进行显示,这完全取决于开发者的要求,而不是一尘不变的,因为界面销毁了,自然网络请求就要中断,或者就要继续。

    0 0
添加回答
相关问答

1

回答

我想问一下关于 ODPS Spark 有调度使用的教程吗,按照官方文档弄了之后里面一些细节的东西处理

2022-07-08 14:11:15 132浏览量 回答数 1

1

回答

Message queue是哪两个线程的通讯层?这两线程分别发送什么数据?

2022-05-14 08:20:53 312浏览量 回答数 1

1

回答

针对于比较复杂的业务流程可以通过什么来降低一个类中的代码量?

2022-03-28 20:26:27 103浏览量 回答数 1

1

回答

4种Java线程锁

2019-12-17 15:48:37 214浏览量 回答数 1

3

回答

403禁止访问访问被拒绝。您无权使用所提供的凭据查看此目录或页面。

2018-07-12 18:13:34 3990浏览量 回答数 3

2

回答

403禁止访问访问被拒绝您无权使用所提供的凭据查看此目录或页面。

2017-02-04 10:47:14 15362浏览量 回答数 2

1

回答

JQuery中事件冒泡是默认的吗~?

2016-05-31 10:35:42 1806浏览量 回答数 1

1

回答

vector,多线程的C问题

2016-03-09 10:15:09 1494浏览量 回答数 1

2

回答

java中除了父类,子类可以有同名的方法

2016-02-15 10:42:38 1788浏览量 回答数 2

2

回答

求助一下各位03系统关闭远程之后

2014-10-25 13:20:17 4560浏览量 回答数 2
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载