Q
为服务回拨
0
A
回答
0
来实现,这将是创建一个广播接收器在您的活动,并有服务使用sendBroadcast用自定义的意图的最简单方法。数据可以通过使用Intent的putExtra()方法传输。确保你在活动的onResume()中注册接收者,并在onPause()中取消注册。
0
你遵循的教程有一个失败的设计:
public class BillingService extends Service implements ServiceConnection {
... ...
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
... ...
}
@Override
public void onServiceDisconnected(ComponentName name) {
... ...
}
}
AHHHH,看起来像博客正试图做一些代码重新分解,他认为将是由活动了移动ServiceConnection更聪明,实现它随着服务的实施。这绝对是一个有效的代码重新分解,但却是失败的设计,因为它会丧失活动和服务之间IPC(进程间通信)的好处和便利。当从面向对象的角度谈论代码重构时,从问题抽象层面思考更多问题,而不是粗暴地将内部类从代码级剥离。
您应该遵循从official dev guide正确的设计模式,定义和实现ServiceConnection作为一个内部类的活动,你将重新获得IPC的好处和便利,只需拨打您在活动中onServiceConnected回调定义的所有方法,一旦该服务已准备就绪:
public class BindingActivity extends Activity {
... ...
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
... ...
// call a function in my main activity once the service is connected:
this.foo();
}
@Override
public void onServiceDisconnected(ComponentName name) {
... ...
}
};
}
请注意,官方开发指南建议做的事情的方式总是最合理和最有效的。 Android开发者不会仅仅为了好玩才写官方的开发指南。希望这可以帮助。
相关问题
- 1. 服务回拨为android
- 2. 支持回拨服务的WCF协议
- 3. 从服务器回拨到客户端
- 4. Android拨打WCF服务
- 5. Angular2 - 多次拨打服务
- 6. Android:拨打服务电话
- 7. 拨打GSM服务#123#
- 8. 使用AlarmManager拨打服务
- 9. 在下面的代码(wcf服务器)中回拨继续
- 10. 检查WCF回拨服务的可用性
- 11. WCF双工服务回拨电话冻结
- 12. 来自服务Android的回拨按钮(系统范围)
- 13. 从服务中运行的线程回拨(通知)
- 14. 可回拨的回拨/验证提示
- 15. 回调不回拨
- 16. 从GAE/J拨打SOAP服务
- 17. 从浏览器拨打Windows服务
- 18. 防止多次拨打网络服务
- 19. 从ios拨打多个网络服务
- 20. 从SL3多次拨打数据服务?
- 21. 从Windows Mobile拨打网络服务
- 22. 从javascript拨打WSO2 ESB服务
- 23. 如何从Iphone拨打wcf服务
- 24. 用于拨入电话的SIP服务
- 25. 从服务器拨打电话 - 有哪些服务?
- 26. Facebook messenger回拨
- 27. Android SyncAdapter回拨
- 28. 用Python回拨
- 29. touchesBegan不回拨?
- 30. 回拨机制
他实际上是使用官方指南说做应用程式内结算与BillingService有路,似乎有点不同,但以下他们做了什么,他们也做了同样的事情 – DRing 2012-04-05 22:34:20
正如我所说,本教程中的代码肯定是有效的,你仍然可以通过做一些额外的工作来实现你想要的(即将Activity上下文作为对Service的引用,然后调用它的方法)。这里的要点是如何根据不同的用例做更合理高效的事情。在你的情况下,除了增加编码复杂度来解决你的问题之外,这种FAIL代码重构不会帮助你获得任何好处。我之前做过类似的事情,但最终意识到Google建议的方式总是最合理和最有效的,至少在大多数常见的使用案例中。 – yorkw 2012-04-05 22:49:35