全心思齐网

手机网络类型出现unknown是什么意思?

其实就是程序由于某些原因出错了,可能是代码 BUG 也可能是系统和环境因素导致的。

例如你的某个 App 需要通过服务器获取数据,但是你的手机网络有问题导致一直获取不到,造成网络连接超时。如果代码中未对「超时」这个可能发生的情况进行处理的话,那么「出现网络请求超时」这个现象就属于未捕获的异常。异常就是指的超时这个行为,未捕获指的未对这个行为进行处理。

而 Android 中程序一旦出错,就会统一的弹出一个「应用已停止运行」,然后结束或者重启应用程序。

单看这个弹窗是无意义的,如果你想看到实际细节,你需要深入输出的日志找到具体原因。这时候就需要用 logcat。

logcat 查看日志,需要先让设备成功进行 adb 连接以后。然后:

当然,由于已经确定要看的是已经崩溃的应用,那么我们过滤日志 Tag 类型为 Error 即可:

再由于我们通常是知道崩溃是那个应用,所以我们可以继续指定应用过滤。例如我自己开发的一个 App 包名是

io.bluerain.tweaks

,假设我不是开发者,我只能通过包名过滤。

网上有一种方法是利用 Android 内置的 ps 命令获取进程,然后用 grep 过滤和 cut 截取到 pid,再由 pid 过滤日志。这样间接的实现包名过滤的手段:

先运行应用,然后输入上面的命令。再重现一次应用崩溃,就可以看到很少量的日志输出,其中包含崩溃详情,例如我这边是出现的异常是:

从 *Exception 的冒号后面看异常消息,发现是无权访问 SD 卡。所以它就是导致该应用已停止运行的原因。


另外,这个跟 ANR 无关。ANR 是 Application not Responding 的简写,也就是「应用未响应」,它通常跟异常、BUG 等都无关,二者完全不是一回事儿。

匿名回答于2024-05-13 17:11:50


相关知识问答