Android 在何处调用stopService()以确保服务已停止?
我知道以前有人问过很多关于如何停止服务的问题,但我没有找到一个能解决我特定问题的问题 在我的应用程序中,我有许多与一个中央服务通信的活动。对于每个活动,我在onResume()方法中调用bindService(),在onPause()方法中调用unbindService()。 我遇到的问题是,每次我在两个活动之间切换时,服务都会被销毁,然后从头开始重新创建 为了解决这个问题,我考虑在onCreate()中调用startService(),以确保服务保持活动状态 我的问题是,我应该将stopService()方法放在哪里,以确保在离开应用程序时调用它?Android 在何处调用stopService()以确保服务已停止?,android,service,Android,Service,我知道以前有人问过很多关于如何停止服务的问题,但我没有找到一个能解决我特定问题的问题 在我的应用程序中,我有许多与一个中央服务通信的活动。对于每个活动,我在onResume()方法中调用bindService(),在onPause()方法中调用unbindService()。 我遇到的问题是,每次我在两个活动之间切换时,服务都会被销毁,然后从头开始重新创建 为了解决这个问题,我考虑在onCreate()中调用startService(),以确保服务保持活动状态 我的问题是,我应该将stopSer
或者,当我在两个活动之间切换时,是否有其他方法保持服务运行,而不依赖startService()。请参阅以获得全面的答案。这就是我停止和启动服务的方式
查看此项了解更多详细信息
public void onClick(View src) {
switch (src.getId()) {
case R.id.buttonStart:
Log.d(TAG, "onClick: starting srvice");
startService(new Intent(this, MyService.class));
break;
case R.id.buttonStop:
Log.d(TAG, "onClick: stopping srvice");
stopService(new Intent(this, MyService.class));
break;
}
}
在服务类:
public class MyService extends Service {
private static final String TAG = "MyService";
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
}
@Override
public void onDestroy() {
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
Log.d(TAG, "onDestroy");
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
Log.d(TAG, "onStart");
}
}
快乐编码 谢谢你的快速回复。我知道我需要在某个时候调用stopService()。我的问题是我不知道该把它放在哪里。我想确保服务在用户退出应用程序之前保持运行(即所有活动都暂停或销毁)。onDestroy()似乎不是正确的位置,因为我们不能依赖调用它。我可以想到的一种方法是在您的服务中有一个后台线程来检查是否仍然存在绑定的活动,如果没有,请调用stopSelf()。再次感谢您!使用后台线程解决了我的问题。