我有一个Android服务,使用StartService()在应用程序的第一个Activity的OnCreate中创建。我需要此服务在应用程序的整个生命周期内运行,即应用程序中的所有活动。但是用户按下Home键或Back键后,该服务不应该消耗资源。除了在所有活动的onPause()方法中停止服务之外,是否有任何优雅的方法来执行此操作?按下主页键后运行的Android服务
1
A
回答
1
你可以做什么达雷尔建议,但把这些代码在一个新类扩展了Activity,然后将其扩展到所有常规活动中。
我不知道有任何其他更优雅的方式来实现你的目标。
2
除了使用StartService之外,您可以在onResume中调用bindService,并在onPause中调用unbindService。没有打开的绑定时,您的服务将停止。
您需要创建一个ServiceConnection才能访问该服务。举例来说,这里是嵌套在为MyService类:
class MyService {
public static class MyServiceConnection implements ServiceConnection {
private MyService mMyService = null;
public MyService getMyService() {
return mMyService;
}
public void onServiceConnected(ComponentName className, IBinder binder) {
mMyService = ((MyServiceBinder)binder).getMyService();
}
public void onServiceDisconnected(ComponentName className) {
mMyService = null;
}
}
// Helper class to bridge the Service and the ServiceConnection.
private class MyServiceBinder extends Binder {
MyService getMyService() {
return MyService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return new MyServiceBinder();
}
@Override
public boolean onUnbind(Intent intent) {
return false; // do full binding to reconnect, not Rebind
}
// Normal MyService code goes here.
}
人们可以使用这个辅助类获得通过访问服务:
MyServiceConnection mMSC = new MyService.MyServiceConnection();
// Inside onResume:
bindService(new Intent(this, MyService.class), mMSC, Context.BIND_AUTO_CREATE);
// Inside onPause:
unbindService(mMSC);
// To get access to the service:
MyService myService = mMSC.getMyService();
+0
感谢您的回复。即使在这种情况下,我需要处理所有活动中的OnPause事件 – Ananth 2010-11-25 05:06:09
相关问题
- 1. 如果主页按键或按下后按下停止以下活动 - Android
- 2. 主页键按压行为
- 3. 永远运行的Android后台服务
- 4. 在后台运行的android服务
- 5. 按下主页键后按钮不响应
- 6. 覆盖服务中的主页按钮和返回按钮 - Android
- 7. Android服务不会在后台运行
- 8. 永远在后台运行服务..? Android
- 9. GPS服务在后台运行(Android)
- 10. 服务如何在后台运行 - Android
- 11. 如何在主页按钮被按下时停止服务?
- 12. 当用户按主页按钮时停止Android服务
- 13. Android闹铃正在运行按下主页按钮模块UI(棒棒糖)
- 14. 按下后退按钮后,android线程仍然运行
- 15. 即使按下主页按钮,如何继续运行IntentService
- 16. Android:如何确定主键被按下
- 17. 在按键上按下按键(按下按键后),跳转到奇怪行为
- 18. 当Android应用程序在后台运行的识别 - Home键按下
- 19. 运行后台服务ruby
- 20. 服务运行然后死
- 21. 服务在后台运行?
- 22. 主页按钮服务背景音乐
- 23. 禁用后退主页按钮Android 3.1
- 24. 线程运行时按下按键 - 如何捕捉按键?
- 25. Android位置服务不会停止在主页按钮上
- 26. 按下一个按钮后,运行Android的例外前往下一个活动
- 27. Jquery自动完成后按下第二个键运行?
- 28. 在MATLAB中按键后运行功能
- 29. 在Android的主页按钮?
- 30. 修改ApplicationResources.groovy后,主页停止运行
'不应该消耗资源'是什么意思?你的意思是什么资源? – xandy 2010-11-25 03:48:30
我不希望服务在后台运行 – Ananth 2010-11-25 03:52:14