活动关闭抛出 DeadObjectException 且未通知错误代码部分

Str*_*nge 6 android exception

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

抛出错误的部分是在网络浏览器和视频播放器的意图期间。

我已经尝试过所有低于 API28 的 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)
Run Code Online (Sandbox Code Playgroud)

Str*_*nge 6

该进程正在死亡,因为在 onClickListener 中使用不明确的上下文来启动活动,同时将上下文传递给列表适配器,并使用 getApplicationContext() 将上下文传递给适配器。

这是它无法托管进程并终止活动导致崩溃或 DeadObjectException 的问题。

线路问题:

context.startActivity(intent);
context.startActivity(i);
Run Code Online (Sandbox Code Playgroud)

和 getApplicationContext() 给出的上下文

解决方案:

将 getApplicationContext() 更改为 SomeActivity.this

可能是 API28 有自己的新规则,这就是为什么它会在 API28 或更高版本的设备上引起问题。

希望这对其他人有帮助。