Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-java.lang.RuntimeException:无法从包中读取输入通道文件描述符_Java_Android_Android Studio - Fatal编程技术网

Android-java.lang.RuntimeException:无法从包中读取输入通道文件描述符

Android-java.lang.RuntimeException:无法从包中读取输入通道文件描述符,java,android,android-studio,Java,Android,Android Studio,我在运行应用程序时遇到了一个致命的异常:main。它先运行,但几秒钟后崩溃 这是我的日志: java.lang.RuntimeException: Could not read input channel file descriptors from parcel. at android.view.InputChannel.nativeReadFromParcel(Native Method)

我在运行应用程序时遇到了一个致命的异常:main。它先运行,但几秒钟后崩溃

这是我的日志:

java.lang.RuntimeException: Could not read input channel file descriptors from parcel.
                                                 at android.view.InputChannel.nativeReadFromParcel(Native Method)
                                                 at android.view.InputChannel.readFromParcel(InputChannel.java:148)
                                                 at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:752)
                                                 at android.view.ViewRootImpl.setView(ViewRootImpl.java:527)
                                                 at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:282)
                                                 at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
                                                 at android.app.Dialog.show(Dialog.java:298)
                                                 at android.app.AlertDialog$Builder.show(AlertDialog.java:993)
                                                 at com.mobext.shakeys.ActivityMain$ProcessData.onPostExecute(ActivityMain.java:545)
                                                 at com.mobext.shakeys.ActivityMain$ProcessData.onPostExecute(ActivityMain.java:212)
                                                 at android.os.AsyncTask.finish(AsyncTask.java:636)
                                                 at android.os.AsyncTask.access$500(AsyncTask.java:177)
                                                 at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:135)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at java.lang.reflect.Method.invoke(Method.java:372)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
在alrt.show中的我的ActivityMain.java:542中,这是logcat指向它的地方:

@Override
    protected void onPostExecute(Boolean result) {
        Log.i(TAG, "onPostExecute");
        super.onPostExecute(result);
        if(result){

            Log.i(TAG, "TASK IS DONE");
            try {
                PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
                app.saveToLastPref(ActivityMain.this, app.PREFS_PREV_VERSION, pInfo.versionName);
            } catch (NameNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Intent intent = new Intent(getApplicationContext(), ActivityMenuPage.class);
            startActivity(intent);
            finish();
        }else{
            ActivityMain.this.deleteDatabase("DBSHAKEYS");
            Builder alrt = new AlertDialog.Builder(mcontext);
            alrt.setMessage("Update failed. Please check your internet connection and try again.");
            alrt.setPositiveButton("Okay", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            alrt.show();
        }
    }

}
在ActivityMain.java:212中:

public class ProcessData extends AsyncTask<Void, Void, Boolean> 
我认为Builder是您现在用来显示AlertDialog的自定义类

下面是可能发生的事情

onPostExecute方法是在某个后台进程完成执行后自动调用的。然后它尝试使用Builder类,该类当前可能正被另一个进程使用,并且仍在内存中运行

那怎么解决呢

查看您的代码,并查看是否已使用显示该对话框 生成器类。 只要换一行就行了 Builder alrt=新建AlertDialog.Buildermcontext;正常情况下AlertDialog.Builder alrt=new AlertDialog.Buildermcontext; 看看这是否有效。
在调用alrt.show方法之前,可能已经显示了一些AlertDialog。你检查过了吗?生成器是您的自定义类吗?@RussVirtuoso您的mContext是什么?这是您的活动,与MyActivity.this或其他类似吗?@RussVirtuoso只需调试您的应用程序,将AlertDialog.Builder alrt=new AlertDialog.BuilderMyActivity.this;。这应该行得通。