即使在用户关闭应用程序(来自任务管理器或相关任务)后,我也希望确保我的服务在后台运行。我试图执行START_STICKY
,但不知道如何正确覆盖startService
方法以允许此工作。如何在服务中设置START_STICKY
目前我只是用startService
方法来启动并绑定LoggingIn.class
到MessagingService.class
为:
startService(new Intent(LoggingIn.this, MessagingService.class));
我已经研究了该方法onStartCommand
是实施START_STICKY
常见的位置,但我在我的应用程序中没有找到它的需要,因为一旦服务已经开始,我将所有其他类绑定到它:
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
imService = ((MessagingService.IMBinder) service).getService();
}
public void onServiceDisconnected(ComponentName className) {
imService = null;
Toast.makeText(GroupMessaging.this, R.string.local_service_stopped,
Toast.LENGTH_SHORT).show();
}
};
和
bindService(new Intent(GroupMessaging.this, MessagingService.class),
mConnection, Context.BIND_AUTO_CREATE);
我怎样才能正确地实现START_STICKY
,并确保我的服务保持活动状态或应用程序关闭后,即使重新启动?
如果您使用startService()并且不重写onStartCommand(),则默认实现已经返回START_STICKY,这使我相信您对START_STICKY的真实含义有着不切实际的期望。 – 2015-04-03 21:05:13
@Sauron:你在哪里见过? – 2015-04-04 13:49:09
仍在研究,但不知道这是否正确。该服务用于发短信的应用程序,并且需要始终处于 – Sauron 2015-04-04 14:44:31