在已存在且正在运行的线程中运行我的代码

时间:2015-02-18 09:58:41

标签: java android multithreading

我正在使用第三方绘制视图。

我得到了进程线程列表,我找到了他们用来绘制内容的线程。

我想在这个帖子中添加我的绘图代码 - 这意味着当他们完成在线程中绘制他们的东西然后我的代码将运行然后线程将结束(或者随之发生的任何事情)。

我尝试在不同的线程和UI线程中执行我的绘图代码,但是当我们更改摄像头位置时,我可以看到我的绘图在第三方之后运行。

是否可以将一些代码注入另一个线程?顺便说一句,我手上只有他们的Thread对象,我从所有线程列表中运行。 如果没有,其他解决方案也会没问题(如果有)

- 编辑 -

尝试suspend他们的线程,绘制我的东西,resume,但它崩溃了 - 因为那些被弃用的函数猜测

1 个答案:

答案 0 :(得分:0)

纯粹理论上的东西:

检查它们是否支持绘制到后备缓冲区(不是屏幕) - 或者 - 尝试将绘图重定向到后备缓冲区(帧缓冲区)。你也可以在后备箱中画画。用前帧缓冲手动切换后备缓冲区(实际上是后帧缓冲区)。

他们最有可能在循环中进行绘图。 onDraw可能是事件触发的,或者只是尝试提供尽可能多的fps。但是,如果您同步对后备缓冲区的访问,则可以强制其绘制线程完全等待绘制和交换缓冲区的时间。您需要首先将您的程序与他们的程序同步(可能通过痛苦地测试您的代码不时运行,并且不会阻止绘图)。并且你必须记住,如果这项工作,同步将意味着他们的线程将在他们的N循环上等待N-1循环的结束,恰好是使用后备缓冲器的第一个操作。