【发布时间】:2021-08-21 04:56:00
【问题描述】:
我对字符串字面量未初始化的变量 html 有疑问。运行版本和跟踪匹配的第 95 行是注释。
公共类 WebviewActivity 扩展 AppCompatActivity {
String html;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
generateChart();
}
private void generateChart(){
html = "<!DOCTYPE html>";
html += "<head>";
...
}
}
无法完全理解这次崩溃。 在 NDK lib generateChart 和 webview 活动中定义了一个方法,该方法也具有相同的名称但具有不同的签名。通过 ndk 包装器在 webview 中调用 Native 方法。我对崩溃线 Method.Invoke(Native method) 感到困惑 这是由于本机方法还是 Java 方法导致的崩溃? 以及如何模拟这个错误来调试。
java.lang.RuntimeException:
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4330)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4362)
at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2128)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7711)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:950)
Caused by: java.lang.NullPointerException:
at in.multinetsystems.vedicastro.util.WebviewActivity.generateChart (WebviewActivity.java:95)
at in.multinetsystems.vedicastro.util.WebviewActivity.onResume (WebviewActivity.java:37)
at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1567)
at android.app.Activity.performResume (Activity.java:7989)
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4320)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4362)
at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2128)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7711)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:950)
谢谢
【问题讨论】:
-
你明白文件
WebviewActivity.java中的第95 行正在抛出NullPointerException吗?该行在方法generateChart中。 -
其实这些行号都是cmets。在安卓工作室。我认为跟踪行号与实际文件不匹配。
-
行号不匹配的唯一方法是编译后更改了源代码。重复。
-
“我对崩溃行 Method.Invoke(Native method) 感到困惑,这是由于本地方法还是 Java 方法导致的崩溃?” - 极不可能。 “以及如何模拟此错误以进行调试。” - 抱歉,我们无法为您提供帮助。
-
对于涉及
generateChart()中的html变量的NPE,我能想到的唯一可能解释是,有另一个线程在更新html,而这个线程是试图做到这一点。如果这是问题所在,那么它可能难以重现。 (但是,这个理论是基于有限的代码 + 您向我们展示的其他信息,问题必须出在您没有向我们展示的代码中。)
标签: java android nullpointerexception