android - 异常调度输入事件,同时调用 startActivity

标签 android performance android-layout android-fragments android-intent

StackOverflow 和其他论坛上已经提出了几个相关问题。但是,这仍然是原因,而且没有一个解决方案对我有用。另外,我想声明我使用的设备是 13'3 英寸 Braun 平板电脑。

根据 Activity 的应用程序流程,

A Activity 调用 B Activity 并从 B 我调用带有标志 FLAG_ACTIVITY_CLEAR_TOP 的 Activity 之后从 Activity A 到 Activity B 重复该过程。下面是更详细的解释

我正在从更新数据库的对话框中调用我的 MainActivity,如下所示,

Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(context.getString(R.string.IS_UPDATE_DATA), true);
context.startActivity(intent);

之后,我使用 AsyncTask 从 Web 服务调用更新我的数据库,更新完成后,我使用以下代码从 Activity 的 onTouch() 启动 Activity,

Intent intent = new Intent(mContext, CategoryActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);

这每次都会导致下面的崩溃,

01-29 20:21:44.631: E/InputEventReceiver(3213): Exception dispatching input event.
01-29 20:21:44.631: E/MessageQueue-JNI(3213): Exception in MessageQueue callback: handleReceiveCallback
01-29 20:21:44.651: E/MessageQueue-JNI(3213): java.lang.NullPointerException
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.os.Parcel.readException(Parcel.java:1431)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.os.Parcel.readException(Parcel.java:1379)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1892)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1412)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.Activity.startActivityForResult(Activity.java:3407)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.Activity.startActivityForResult(Activity.java:3368)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:839)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.Activity.startActivity(Activity.java:3603)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.Activity.startActivity(Activity.java:3571)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at com.brodos.app.storeship.MainActivity.onTouch(MainActivity.java:857)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.View.dispatchTouchEvent(View.java:7258)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2177)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1878)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2177)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1878)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2177)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1878)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2177)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1878)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2470)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1633)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.Activity.dispatchTouchEvent(Activity.java:2428)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2418)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.View.dispatchPointerEvent(View.java:7443)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchPointerEvent(PhoneWindow.java:2323)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3526)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3471)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4612)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4591)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4683)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.os.MessageQueue.nativePollOnce(Native Method)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.os.MessageQueue.next(MessageQueue.java:125)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.os.Looper.loop(Looper.java:124)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at android.app.ActivityThread.main(ActivityThread.java:5063)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at java.lang.reflect.Method.invokeNative(Native Method)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at java.lang.reflect.Method.invoke(Method.java:511)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-29 20:21:44.651: E/MessageQueue-JNI(3213):   at dalvik.system.NativeStart.main(Native Method)

如果有人可以指导或有解决方案,请告诉我。另外,如果有任何问题需要添加,请告诉我。

最佳答案

我经历过和你很相似的,解决方案是这样的:

if (savedInstanceState != null) {
    Intent mIntent = new Intent(context, SomeActivity.class);
    mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(mIntent);
    mIntent.overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}

关于android - 异常调度输入事件,同时调用 startActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35087520/

相关文章:

c - 如何处理条件初始化,这是一种好的做法吗?

Android动态RelativeLayout相互重叠

android - 拖放:ImageView 不会在屏幕上一直移动

java - 在框架布局中显示 map fragment

Android,如何增加列表适配器中的行高?

python - 如何有效地将 numpy 数组中的相应元素相乘?

android - 使用 AsyncTask 从数据库读取项目

android - 如何为 Android 应用程序创建导览

android - 如何在 2 秒后从服务器在 imageview 中更改图像?

android - View 什么时候获得它的边界?