我的 Android 应用程序中有两个活动。主要活动启动一个线程,该线程将绘制一个摆动的钟摆,可以使用“停止”按钮停止它。但是,如果用户移动到第二个活动,他应该能够看到计算出的坐标和振荡参数(角速度等),因为它们是由绘图线程实时计算的。
我的查询是:
如何将数据从执行振荡的线程发送到第二个活动?注意:数据是定期生成的(FPS),因此我需要在数据可用时立即将数据发送到第二个活动。
我们可以使用信号量和生产者-消费者解决方案,即绘图线程在哪里产生值,第二个活动启动一个消耗它们的线程?
我的方法:我有一个钟摆类来计算所需的参数。我已经扩展了 SurfaceView 以使用线程执行我的绘图。所以,我想有两个信号量(生产者和消费者),然后让生产者线程(绘图线程)更新参数,然后等待消费者(第二个活动启动的线程)获取它们,重复循环。
另一种思路:让绘图线程在用户移动到第二个activity时停止执行,然后从第二个activity产生两个线程(消费者线程和生产者线程)来执行任务(即计算参数并取参数),而pendulum实现了Parcelable接口,所以它可以传递给第二个活动。
- 有没有更好/合适的方法来解决这个问题?