Android 安卓使用服务订阅/取消订阅可观察对象,好主意?

Android 安卓使用服务订阅/取消订阅可观察对象,好主意?,android,android-sdk-2.1,observer-pattern,Android,Android Sdk 2.1,Observer Pattern,我有一个要求,当用户点击一个按钮时,需要观察一个对象。当用户再次单击该按钮时,观察停止 我最初的想法是使用布局文件中的onClick=“myMethod”将按钮绑定到活动中的方法 当调用此方法时,它将调用开始观察对象的startService()。我的意思是,它将服务注册为观察者 第二次单击按钮时,它将调用stopService()方法,该方法将服务取消注册为观察者 我对使用服务的想法就是这样的观察;随后的操作将从UI线程中移除。这是一种合理的方法,还是Android SDK中有什么东西可以更轻

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

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

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

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

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

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

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

这是一种合理的方法,还是Android SDK中有什么东西可以更轻松地做到这一点

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


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

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

Hi Mark,该对象将是一个POJO(两个字符串、日期等)。此对象将从第三方API更新。我试图找到一个解决方案,通过使用服务来“启动”和“停止”监视该对象。用户不会(或不应该)从活动中导航,因为他们将看到观察的输出。@James.Elsey:“对象将是POJO”--POJO不是孤立存在的。一些Android组件(如服务)需要拥有它们。