0

我有一个要求,即当用户单击按钮时,需要观察一个对象。当用户再次单击该按钮时,观察停止。

onClick="myMethod"我最初的想法是使用布局文件中的将按钮绑定到活动中的方法。

调用此方法时,它将调用startService()开始观察对象的方法。我的意思是它将服务注册为观察者。

第二次单击该按钮时,它会调用将stopService()服务取消注册为观察者的方法。

我对使用服务的想法是这样的观察;随后的操作从 UI 线程中移除。这是一种合理的方法还是 Android SDK 中的某些东西可以更轻松地做到这一点?

4

2 回答 2

0

我对使用服务的想法是这样的观察;随后的操作从 UI 线程中移除。

仅当您分叉自己的线程,并且仅当“观察”支持替代线程时。从 UI 的角度来看,服务位于“背景”中(它们不会直接在屏幕上绘制),但从线程的角度来看,它们默认不在“背景”中。

这是一种合理的方法还是 Android SDK 中的某些东西可以更轻松地做到这一点?

鉴于您在上面写的内容,这是不可能回答的。你似乎认为按钮很重要——可能,它不是。可能重要的是您正在“观察”这个“对象”是什么……而您没有说它是什么。

如果您的服务能够可靠地在 中注销自己stopService(),那么您不应该在使用这种方法时遇到垃圾收集问题。然而,关于观察者/可观察者模式的线程通常是可观察者的责任——在这种情况下,是神秘的“对象”。

于 2010-12-30T15:11:56.957 回答
0

我同意墨菲的观点,但我认为我应该给你一点:1.当活动被破坏时你在做什么?暂停?2.如果您正在观察的对象正在生成您需要观察的事件,您必须考虑在所有情况下它们会发生什么,如果观察者对象因活动而死,我认为您最好使用异步任务或本地线程,在任何情况下,您还必须发现该活动在您的服务中被销毁,以便在活动 onDestroy 中对观察到的对象进行 GC 或终止该服务。

于 2010-12-30T15:27:51.510 回答