我有一个用户的崩溃报告,我无法在我的测试设备上重新创建相同的错误。
以下是相关代码:
for(File f : sessionDirectory.listFiles()){
Date lastModDate = new Date(f.lastModified());
/*Line 53*/ Session ss = new Session(lastModDate.toLocaleString() , f.getName()) ;
sessionArrayList.add(ss ) ;
}
以下是堆栈跟踪:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mydomain/com.mydomain.myActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
at android.app.ActivityThread.access$2300(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.mydomain.myActivity.onCreate(myActivity.java:53)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
答案 0 :(得分:1)
堆栈跟踪说:
引起: java.lang.NullPointerException at com.mydomain.myActivity.onCreate(myActivity.java:53)
第53行是什么?
sessionDirectory
可以null
而sessionDirectory.listFiles()
可以返回null
- 用户崩溃报告也提醒您: - )
答案 1 :(得分:1)
我在java(不是android)中与字符串表示形成一致的时候已经看过类似的东西,并且很长一段时间没有线索的原因。我不记得确切的细节,但是它与转换方法没有线程安全有关,这很奇怪,因为(如果我没记错的话)它发生在对静态jdk方法的调用中。
尝试将lastModDate.toLocaleString()拉入synchronized方法并使用DateFormat实例时仍然会发生。
当我查找时,jdk中已经存在一个针对此的错误文件,但它被拒绝了。
(也许toLocaleString使用附加到当前语言环境的DateFormat,它在所有线程之间共享,并调用非线程安全方法。)
然而,这只是一个猜测,但由于症状同样很奇怪,只需试一试。