【问题标题】:Android: programmatically cut internet connection for the AppAndroid:以编程方式切断应用程序的互联网连接
【发布时间】:2013-11-09 00:20:41
【问题描述】:

有没有办法在短时间内以编程方式仅为我的应用切断互联网连接(不是系统范围!!)或在全球范围内关闭我的应用的所有当前正在进行的网络连接?

来自 David 的一位 cmets 的其他信息:

我的用例如下:我正在使用一个启动网络连接并做一些工作的库,在库中不可能手动停止事务,所以唯一的工作是停止进程建立的所有连接我的应用程序,我不想切断整个系统的连接。

【问题讨论】:

  • 如果不出意外,/proc 文件系统公开的信息(或者甚至可能只是迭代查询)将允许您识别当前打开的属于您的进程的本机文件描述符是网络套接字,并可能强制关闭他们。但这不会阻止新的打开。

标签: android


【解决方案1】:

你应该写方法,当检查是否需要执行互联网任务(例如AsyncTask)。喜欢:

  @Override
   protected Void doInBackground(Void... voids) {
    if(isOnline()) {
      // your logic here
    } else {
      // other logic
    }
   }

isOnline方法检查是否需要执行任务。

编辑:

对于已经运行的操作,您需要将方法 isOnline 放到其他逻辑方法中,例如 postExecute,如果您设置 isOnline = off, on postExecute方法什么也没发生,如果你也像上面一样检查。

对于停止任务,你应该收集任务并调用cancel(...)方法。

【讨论】:

  • 这似乎不是正确的答案。还有已经运行的操作的问题。
  • 这并不能解决问题。 postExecute 是在它完成之后。太晚了。
  • @Malachiasz 为什么?请求将完成,但它什么也没做,请看上方。
  • 确实,如果您在某个线程中有代码在等待阻塞调用、网络相关或其他方面,这将无济于事。
  • 这个答案与我的问题无关。我的用例如下:我正在使用一个启动网络连接并做一些工作的库,在库中不可能手动停止事务,所以唯一的工作是停止我的应用程序进程建立的所有连接,我不想切断整个连接系统。
猜你喜欢
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多