应用程序无响应而不是崩溃

时间:2015-06-27 14:52:10

标签: android debugging crash

这个错误已经存在了好几天了,我们似乎无法修复它。 当应该出现错误时,我们的应用程序会挂起并变得无响应而不是崩溃。 我已经尝试了从干净重建我的应用程序到完全删除它并重新删除它的所有内容。 我在Android 4&amp ;;的多部手机上尝试过它5,仍然没有运气。 我们正在使用Android Studio 1.2.2

之前有没有其他人经历过这个并且知道如何修复它? 这真是令人沮丧,因为我们无法看到应用程序崩溃的代码在哪里。

谢谢!

1 个答案:

答案 0 :(得分:1)

在大多数情况下,

Unresponsiveness表示某些长时间运行的操作发生在UI thread中。通常是磁盘IO操作或一些计算。 Android 3+上的网络通话只是崩溃应用。要找出您可以使用StrictMode class:

的原因

1)您需要添加到您的应用程序组件(Application,Activities)严格模式初始化代码:

@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)

相关问题