我以前问过各种形式的这个问题,并得到了不同的意见。主要是,我被建议做一些阅读和实验。但没有结果。我仍然不理解已经提出的任何替代解决方案。同样,我正在开发一个安卓应用程序来绘制蓝牙数据。
我有一个蓝牙活动,它显然创建了一个后台线程,它通过蓝牙连接接收到的数据更新屏幕。当我启动另一个/新的活动来绘制数据时,我可以看到蓝牙后台线程继续写入Logcat。,所以我知道蓝牙后台线程在启动绘图活动时仍然在运行。
我的目标是绘制蓝牙后台线程不断提供的蓝牙数据。由于这个蓝牙后台线程仍然在运行,所以我决定使用()方法调用静态方法Plot.plotData()来绘制数据。和工作,但我不明白为什么。它将无休止地运行,没有一个问题-接收和绘制蓝牙数据。
但据我所知,这可能不是一个好的解决方案,因为可能:线程安全,内存泄漏,阻塞主UI线程等。虽然我没有遇到任何这些问题,但我不愿意得出我的解决方案是一个好的,因为我收到的反馈。
有人建议我尝试一个服务、AsyncTask等,而不是从蓝牙后台线程的update()方法中调用一个静态方法,Plot.plotData()。但从我所做的研究来看,我不知道如何将我的解决方案改为更合适的解决方案。
如果有人看到更合适的解决方案,请大声说出来,并描述一下。--如果我的当前解决方案有问题,我不想继续前进。
如果你想看源代码,我会很乐意发布它。
发布于 2011-06-08 00:03:07
我要做的是将BT数据( bkg线程中的数据)放到Android服务中,该服务也管理bkg线程。从该服务中,您可以通过意图广播更新,或者让活动绑定到该服务。这样,任何知道要监听什么的活动都可以监听您的数据。
看看http://developer.android.com/guide/topics/fundamentals/services.html,了解一下服务的概念。一旦你了解了基础知识,你就可以深入到更深的层次。
还请阅读这篇文章:http://developer.android.com/resources/articles/multitasking-android-way.html
我还想补充一句,你可能找不到一个“完美”或“正确”的答案,你需要看看医生,让你的手有点脏,看看什么最适合你的特殊问题。
发布于 2011-06-08 01:02:17
在android中,在活动之间共享数据的常用方法(或者在您的例子中,使用线程在不同活动中启动的活动)是
听起来你在寻找一种内存中共享数据的方式,而这根本不是Android活动模型的工作方式。你问你的方法是否有问题,答案肯定是肯定的。
我建议研究一下服务或数据库来解决这个问题,并摆脱静态方法。
https://stackoverflow.com/questions/6272457
复制相似问题