gpt4 book ai didi

java - 询问互联网是否可用时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 18:42:47 24 4
gpt4 key购买 nike

在我的应用程序开始时(在 MainActivity onCreate 中),我使用以下代码询问是否有互联网连接:

boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
connected = true;
} else
connected = false;

但我在 Google Dev 控制台中从混合 Android 版本中收到以下崩溃报告:

java.lang.RuntimeException: 

at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2944)

at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3079)

at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)

at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)

at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)

at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1836)

at android.os.Handler.dispatchMessage (Handler.java:106)

at android.os.Looper.loop (Looper.java:193)

at android.app.ActivityThread.main (ActivityThread.java:6702)

at java.lang.reflect.Method.invoke (Native Method)

at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)

at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:911)
Caused by: java.lang.NullPointerException:

at com.fujigames.memesoundboard.MainActivity.onCreate (MainActivity.java:99)

at android.app.Activity.performCreate (Activity.java:7136)

at android.app.Activity.performCreate (Activity.java:7127)

at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1271)

at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2924)

MainActivity.java:99 是我上面显示的代码。为什么我会发生此崩溃以及我应该采取什么措施来修复它?谢谢。

最佳答案

Why am I getting this crash?

  1. getSystemService 调用可以返回 null。您需要检查并处理它。

  2. getNetworkInfo 调用可以返回 null。您需要检查并处理它。

您没有检查 null 返回,因此看起来其中之一是 NPE 的根本原因。

<小时/>

What should I do to fix it?

要解决这些问题,请首先阅读相应方法的 javadoc,以了解何时/为何返回 null。然后修改您的代码以执行适当的操作。

(弄清楚如果根本没有网络服务,或者 Wifi 和/或移动不可用,您的应用程序应该做什么?我们无法告诉您这一点。)

<小时/>

请注意,javadoc 表示 getNetworkInfo(...) 在 API 级别 29 中已弃用。因此,此代码可能需要在将来的某个时候完全替换。

关于java - 询问互联网是否可用时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59889064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com