对于我们来说,此错误已经存在了好几天,而我们似乎无法修复它。
当出现错误时,我们的应用程序将挂起并变得无响应,而不是崩溃。
我已经尝试了所有工作,从干净的重建应用程序到完全删除它并重新启动它。
我已经在Android 4和5的多部手机上尝试过了,但还是没有运气。
我们正在使用Android Studio 1.2.2
有没有其他人以前经历过这个,并且知道如何解决?
实在令人沮丧,因为我们无法看到应用程序在代码中的崩溃位置。
谢谢!
最佳答案
在大多数情况下,Unresponsiveness
意味着UI thread
中会发生一些长时间运行的操作。通常是磁盘IO
操作或一些计算。 Android
3+上的网络通话只会使应用崩溃。要找出原因,可以使用 StrictMode
类:
1)您需要向您的应用程序组件(应用程序, Activity )添加严格模式初始化代码:
@Override protected void onCreate(Bundle savedInstanceState) {
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyFlashScreen()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.build());
}
super.onCreate(savedInstanceState);
//...your activity cretion code
}
2)在手机的开发人员设置中,您需要启用
Strict mode
。3)然后启动您的应用程序,看看
logcat
中发生了什么。例如,使用
SQLite
从ORMLite
数据库查询25000个对象将显示下一个日志:StrictMode policy violation; ~duration=6267 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=2079 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1107)
//...
at com.j256.ormlite.android.AndroidCompiledStatement.getCursor(AndroidCompiledStatement.java:181)
//...
at su.sample.android.hz.activities.MainActivity.queryOnUI(MainActivity.java:63)
at su.sample.android.hz.activities.MainActivity.access$000(MainActivity.java:23)
at su.sample.android.hz.activities.MainActivity$1.onClick(MainActivity.java:45)
//...
它按字面显示导致违反的代码行:
MainActivity.queryOnUI(MainActivity.java:63)
关于android - 应用无响应而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31090001/