android - 应用无响应而崩溃

标签 android debugging crash

对于我们来说,此错误已经存在了好几天,而我们似乎无法修复它。
当出现错误时,我们的应用程序将挂起并变得无响应,而不是崩溃。
我已经尝试了所有工作,从干净的重建应用程序到完全删除它并重新启动它。
我已经在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中发生了什么。

例如,使用SQLiteORMLite数据库查询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/

相关文章:

android - 为什么我以编程方式创建的按钮的样式不同?

android - Android O 中其他应用的大小

xcode - 通过断点编号 Xcode 识别断点

matlab - 运行MEX文件时检测到错误,哪个崩溃了Matlab?

java - Tomcat 崩溃时生成的 hs_err_pid.log 文件是什么?

android - 如何使用 Twilio 解决 java.lang.NoClassDefFoundError UserAgentConfig$Callbacks

android - Android 上可以自定义对讲语音吗?

asp.net - Visual Studio 忽略 try catch - 仅调试

debugging - 堆扩展命令失败 : failed to initialize the extention

溢出时的 C++ 数组绑定(bind)异常 - "cout"并且没有 "cout"