android - 如果正在运行的 Activity 关闭, Activity HTTP 调用会发生什么情况?

标签 android multithreading apache-commons

我正在使用 Apache Commons 进行 HTTP 调用,在我的 Activity 中,我有一个进行调用的线程。如果设备发出调用并坐在那里等待连接(假设网络拥塞并且调用需要一些时间),同时用户退出应用程序并且 Activity 处于后台。我的电话会怎样?就此而言(想一想)在 Activity 中启动的任何线程会发生什么?如果我有一个线程坐在那里做它的事情(不管它是什么)并且 Activity 关闭,我是否必须自己处理在 onPause() 上终止线程?

编辑... 那么,根据 Ted Hopp 的回答,终止 Apache 请求的正确方法是什么?我正在查看 Commons documentation并且有很多方法*看起来可以解决问题,但是由于文档缺乏详细信息(如果您不打算指定内容,为什么还要麻烦文档?!)我想知道哪个在终止我的连接所在的线程之前,我应该在 HttpConnection 对象上调用哪些方法?

最佳答案

关闭 Activity 对托管 Activity 的进程没有直接影响。所有其他线程继续运行。您应该覆盖一个或多个 life cycle方法(onPauseonDestroy 等)来检测 Activity 是否正在完成并中断或以其他方式终止正在运行的线程。 Activity 方法 isFinishing() 可用于区分正在关闭的 Activity 和由于配置更改而正在销毁和重新启动的 Activity 。

你的线程应该写一个方法来取消执行。特别是对于 apache-commons,该方法应该有两个步骤。首先,您应该为传递给 HttpClient.execute() 方法的方法调用 abort()。其次,您应该关闭连接本身:

client.getHttpConnectionManager()
    .getConnection(client.getHostConfiguration()).close();

实际上,如果您只执行最后一步,实际上应该足以在方法中抛出 IOException 并停止所有操作。

关于android - 如果正在运行的 Activity 关闭, Activity HTTP 调用会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957956/

相关文章:

android - 无法在 play-games-plugin-for-unity 中加载库 libgpg.so

windows - pthreads 和 CreateThread 的死锁

jsp - Apache commons -> 文件上传 -> parseRequest() 错误

java - 如何排序 List<File> 以首先列出目录并按目录对文件进行分组?

android - 如何正确地将变量放入 url 中。改造2.0

android - Crashlytics 报告 TextView.makeSingleLayout 的多个问题

iphone - glGenTextures 在后台线程中返回零

java - 超时后中止 countDownLatch.await()

java - 在Matlab环境中运行Java代码的步骤?

android - 哪个会使用更多内存?数组与 SQLite (Android)