Android中含有SurfaceView控件的跨进程传递

本文探讨了在Android开发中,如何实现SurfaceView控件的跨进程传递。虽然RemoteViews有限制,但通过SurfaceHolder和MotionEvent,可以实现在不同进程间共享SurfaceView的绘制内容。在进程B中创建自定义的SurfaceView,并通过事件传递给进程A处理,然后将处理结果填充回B的Surface,从而达到跨进程显示的效果。
摘要由CSDN通过智能技术生成

Android中含有SurfaceView控件的跨进程传递

Android开发中,进程间通信的主要方式,是通过Binder进行通信。 Binder的原来有太多资料可以供学习和参考, 此处就不再赘述。 写这篇文章,其实是想分享一个实际使用中遇到一个关于View的传递问题。
View的跨进程传递,实际上也有一个常用常听说的概念, 叫做RemoteViews。 虽然android SDK提供给我们了一个跨进程的好帮手, 但其传递的类型毕竟还是有限, 只能支持以下:
在这里插入图片描述
并且,还有一种场景,当我们用一个进程A加载了非可拓展的SDK,比如第三方SDK,使用其SDK提供的控件,比如自定义的SurfaceView类,但另一个进程B想通过进程间调用来将进程A的SurfaceView中绘制的内容呈现在自己的进程中时, 可能就会遇到麻烦了。 这就是本文想分享的一个跨进程调用SurfaceView的一个方案。
虽然SurfaceView并没有继承Parcelable类, 也不被RemoteViews支持。 但实际上,SurfaceView所绘制的数据区域,可以在进程B中定义,在layout中布局一个MySurfaceView extends SurfaceView类。 并重写以下方法:
surfaceCreated(SurfaceHolder holder)
surfaceChanged(SurfaceHolder holder, int format, int width, int height)
onTouchEvent(Motio

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值