Vin*_*nce -3 static android static-methods
我想我已经知道了这个问题的答案,因为看来,呃,有点牵强.但我正在认真寻找解决方案.
假设我有一个Activity,称之为蓝牙活动,启动蓝牙背景线程,即使蓝牙活动消失,线程也会永远运行 - 是的,它确实会永远运行.这个蓝牙背景线程是一个数据采集线程,它不断地收集由Activity绘制的数据,实时称之为Plot活动.我们可以将绘图方法称为一个名为Plot.plotData()的静态方法;
我的问题是我无法判断Plot活动何时处于活动状态,因此我无法确定何时开始调用Plot.data().你可能会认为,因为Plot.plotData()是一个静态方法,我可以随时调用它.但事实并非如此.我必须等到Plot通过Intent()和startActivity实例化.否则Plot的onCreate()方法尚未调用,Plot充满了空指针.
我该如何解决这个问题.添加一个最初为false的静态getter/setter,直到onCreate运行?
假设我有一个Activity,称之为蓝牙活动,启动蓝牙背景线程,即使蓝牙活动消失,线程也会永远运行 - 是的,它确实会永远运行.
它不会,除非你把它放入Service.请不要泄漏螺纹Activity.
请注意,您已经被告知了这一点.
我们可以将绘图方法称为一个名为Plot.plotData()的静态方法;
这不应该是一种静态方法,正如我之前告诉过你的那样.
我的问题是我无法判断Plot活动何时处于活动状态,因此我无法确定何时开始调用Plot.data().
这就是为什么Plot活动应该对自己的绘图负责.您的后台主题Service应该只处理数据收集.你可以安排从获取数据Service到Plot通过活动Messenger,或者通过bindService()和回调,或其他手段.
进行数据收集的服务设计和显示结果的活动在Android中非常普遍.电子邮件客户端使用服务收集新的电子邮件.Feed阅读器使用服务来收集最新的Feed更新.等等.您恰好通过蓝牙收集信息,而此概念的大多数示例将通过Internet收集信息.
因此,回顾一下:Service使用后台线程(或线程,复数,如果需要)将蓝牙数据收集逻辑移动到a .安排Service在Plot活动到达时将数据传递给活动.让Plot活动显示结果.
| 归档时间: |
|
| 查看次数: |
675 次 |
| 最近记录: |