【问题标题】:startActivity(intent) doesn't work in some devicesstartActivity(intent) 在某些设备上不起作用
【发布时间】:2014-02-10 22:03:25
【问题描述】:

首先,我为这个错误搜索了很多,但我找不到任何可以帮助我解决这个问题的东西......所以,如果这个问题是重复的,请原谅我。

我遇到了一个奇怪的错误...我正在开发一个针对 android minSdkVersion 14 的应用程序。我在模拟器、HTC、三星 Galaxy S2 和 Nexus 4 中测试了我的应用程序. 该应用程序在所有这些设备上的行为完全相同,但在三星 GT-S6810 上却无法运行。

我检查了我的应用程序的 Logcat 并且没有错误,但是如果我检查整个日志,我会得到:

02-10 19:39:03.640: E/ActivityManager(1565): Activity Manager Crash
02-10 19:39:03.640: E/ActivityManager(1565): java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
02-10 19:39:03.640: E/ActivityManager(1565):    at java.util.ArrayList.get(ArrayList.java:306)
02-10 19:39:03.640: E/ActivityManager(1565):    at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3518)
02-10 19:39:03.640: E/ActivityManager(1565):    at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4213)
02-10 19:39:03.640: E/ActivityManager(1565):    at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:2696)
02-10 19:39:03.640: E/ActivityManager(1565):    at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:150)
02-10 19:39:03.640: E/ActivityManager(1565):    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1754)
02-10 19:39:03.640: E/ActivityManager(1565):    at android.os.Binder.execTransact(Binder.java:367)
02-10 19:39:03.640: E/ActivityManager(1565):    at dalvik.system.NativeStart.run(Native Method)
02-10 19:39:03.660: E/JavaBinder(1565): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
02-10 19:39:03.660: E/JavaBinder(1565): java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
02-10 19:39:03.660: E/JavaBinder(1565):     at java.util.ArrayList.get(ArrayList.java:306)
02-10 19:39:03.660: E/JavaBinder(1565):     at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3518)
02-10 19:39:03.660: E/JavaBinder(1565):     at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4213)
02-10 19:39:03.660: E/JavaBinder(1565):     at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:2696)
02-10 19:39:03.660: E/JavaBinder(1565):     at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:150)
02-10 19:39:03.660: E/JavaBinder(1565):     at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1754)
02-10 19:39:03.660: E/JavaBinder(1565):     at android.os.Binder.execTransact(Binder.java:367)
02-10 19:39:03.660: E/JavaBinder(1565):     at dalvik.system.NativeStart.run(Native Method)

老实说,我不知道这个错误是否与我的应用程序直接相关,但是当我尝试单击我的菜单或其他将启动 Activity 的元素时,它就会出现。

这是一些代码。这只是一个小片段,但正如我所说,它在其他设备和模拟器中都能完美运行。

menuLogin.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        if (isAuthenticated()) {
            // some code...
        } else {
            Intent i = new Intent(BaseActivity.this,
                    AccountActivity.class);
            startActivity(i);
            overridePendingTransition(R.anim.slide_in_right,
                    R.anim.slide_out_left);
        }
    }
});

我该如何解决这个问题?

【问题讨论】:

  • 实际上不知道这是否是导致您的异常的瓶颈,但请查看stackoverflow.com/questions/15604145/…
  • 嗨@NKN,谢谢你的回答。如果我理解正确,在这种情况下,这个人有一个远程进程。在我的项目中,我在同一个应用程序中拥有所有内容,这只是一个启动其他活动的活动。我还尝试调试上面的代码,它“运行良好”,应用程序不会崩溃,也不会显示任何错误。还有其他想法吗?

标签: android android-intent android-activity


【解决方案1】:

这里的行为非常奇怪,但显然你得到了一个似乎在一个进程(活动 1)中抛出但没有在那里处理的异常。这会导致 java binder 引发未捕获的远程异常,并使活动管理器在活动 2 开始时崩溃。我对您的建议是调试并逐步完成,直到找到原始异常的原因并处理它。您可以尝试的另一件事是查看@NKN 的链接或这个Throw exceptions through several processes,看看您是否得到任何答案。祝你好运,调试愉快!

【讨论】:

    猜你喜欢
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多