【问题标题】:Acra restarting over and over again and freezes emulatorAcra 一遍又一遍地重新启动并冻结模拟器
【发布时间】:2013-11-04 09:10:52
【问题描述】:

在一些测试期间,我设法将模拟器冻结到我必须创建一个新模拟器的地步。在下面的代码中,我不小心拼错了一个类名和Class.forNamethrewRuntimeException()ClassNotFoundException。然后ActivityManager 正在执行Start proc org.acra.CrashReportDialog。这是循环运行并冻结模拟器可能是因为onCreate() 永远无法完成,我不确定。

当 Emulator 启动时,我有 android.permission.RECEIVE_BOOT_COMPLETED 来启动我的应用程序。

除了将Class.forName 代码从Application onCreate() 移开或编写更好的代码之外,还有什么方法可以防止这种情况发生?

    public class Application extends android.app.Application {
           @Override
            public void onCreate() {
                super.onCreate();
                ACRA.init(this);
                ACRA.getErrorReporter().setReportSender(new AcraReportSender(this));
                // gets id, create it if it dose not exist
                ACRA.getErrorReporter().putCustomData("APPLICATION_ID_UUID", SettingsManager.applicationId());
                Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
                ArrayList<String> contactManager = new ArrayList<String>();
                TypedArray contactManagerClasses = getResources().obtainTypedArray(R.array.contact_managers);
                for (int index = 0; index < contactManagerClasses.length(); index++)
                    contactManager.add(contactManagerClasses.getString(index));
                contactManagerClasses.recycle();
                TypedArray managerClasses = getResources().obtainTypedArray(R.array.managers);
                for (int index = 0; index < managerClasses.length(); index++)
                    if (isContactsSupported() || !contactManager.contains(managerClasses.getString(index)))
                        try {
                            Class.forName(managerClasses.getString(index));
                            Log.d("Application","LOADING MANAGER " + managerClasses.getString(index));                  
                        } catch (ClassNotFoundException e) {
                            throw new RuntimeException(e);
                        }
                managerClasses.recycle();

                TypedArray tableClasses = getResources().obtainTypedArray(R.array.tables);
                for (int index = 0; index < tableClasses.length(); index++)
                    try {
                        Class.forName(tableClasses.getString(index));
                        Log.d("Application","LOADING TABLE " + managerClasses.getString(index));                    
                    } catch (ClassNotFoundException e) {
                        throw new RuntimeException(e);
                    }
                tableClasses.recycle();
                onServiceStarted();
            }
......
....

【问题讨论】:

    标签: android loops freeze runtimeexception acra


    【解决方案1】:

    简答否。

    即使您删除了 ACRA,您也会发现您的 Activity 会一遍又一遍地重新启动。这是因为 Android 会尝试重新启动崩溃的应用程序。在您的情况下,它在构建应用程序期间崩溃。

    最好的建议是让您的创业万无一失。

    【讨论】:

    • 是的,当然,我挂断了 Acra,但你可能是对的
    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多