活动关闭引发DeadObjectException,其中包含未通知的错误代码部分

问题描述 投票:0回答:1

该代码对于低于API28的设备运行正常,对于高于或Api28的设备运行失败。调试器不会显示引发错误的代码部分。

引发错误的部分是在意图访问Web浏览器和视频播放器的过程中。

我已经尝试使用API​​28以下的所有android设备,并且代码运行正常。

    hRecycler.read.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

          //  Toast.makeText(context,url,Toast.LENGTH_SHORT).show();

            Intent i = new Intent(Intent.ACTION_VIEW);

            i.setData(Uri.parse(url));

            context.startActivity(i);
        }
    });

    @Override
    public void onSuccess(VimeoVideo video) {
    String streamlink = (String)video.getStreams().values().toArray()[0];
    Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
    Uri data = Uri.parse(streamlink);
    intent.setDataAndType(data, "video/mp4");
    context.startActivity(intent);
    }

    @Override
    public void onFailure(Throwable throwable) {
    Toast.makeText(context,"Problem withlink",Toast.LENGTH_SHORT).show();
    }




 RemoteException occurs on reporting focusChanged, w=Window{bd21bfc u0 com.example.android.play_api/com.example.android.play_api.TestimonyActivity EXITING} android.os.DeadObjectException
         android.os.DeadObjectException
     at android.os.BinderProxy.transactNative(Native Method)
     at android.os.BinderProxy.transact(Binder.java:1143)
     at android.view.IWindow$Stub$Proxy.windowFocusChanged(IWindow.java:500)
     at com.android.server.wm.WindowState.reportFocusChangedSerialized(WindowState.java:3903)
     at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:5426)
     at android.os.Handler.dispatchMessage(Handler.java:106)
     at android.os.Looper.loop(Looper.java:214)
     at android.os.HandlerThread.run(HandlerThread.java:65)
     at com.android.server.ServiceThread.run(ServiceThread.java:44)
android exception
1个回答
0
投票

该过程已死,因为在将onClickListener传递到列表适配器的过程中,两个onClickListener都使用了模糊的上下文来启动活动,而在使用getApplicationContext()将上下文传递到适配器的过程中。

此问题它无法承载进程并杀死导致崩溃或DeadObjectException的活动。

行中的问题:

context.startActivity(intent);
context.startActivity(i);

和上下文作为getApplicationContext()给出

解决方案:

将getApplicationContext()更改为SomeActivity.this

并且可能是API28有自己的新规则,因此,这会在具有API28或更高版本的设备中引起问题。

希望这对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.