我有一个应用程序,我在其中创建了一个服务MyService.class 现在MyService.class使用bindService()绑定到我的活动,但我希望我的服务在后台运行,即使活动已经破坏了自己。
所以我启动了服务,然后将其绑定如下:
private void doBindService() {
if (!isServiceBound){
Log.d(LOG_TAG, "Binding Service...");
if (mBtAdapter != null && mBtAdapter.isEnabled()){
Intent intent = new Intent(MyActivity.this, MyService.class);
startService(intent);
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
}
}
在MyActivity的onDestroy方法中,我解除了服务的绑定
现在我的服务运行顺利,直到与远程设备的连接中断。如果连接断开,我想暂停/暂停/停止此服务,然后在每60秒后尝试启动服务/连接。
我试过这个但是没有用。
private void stopService() {
doUnbindService();
stopService(new Intent(MyActivity.this, MyService.class));
startService(new Intent(MyActivity.this, MyService.class));
}
请任何帮助将不胜感激。在此先感谢!!!
答案 0 :(得分:0)
试试这个
答案 1 :(得分:0)
我不确定我是否了解您的要求。
使用此解决方案,您可以播放,暂停和停止服务。 并且该服务每隔60秒执行一些工作
public class MyService extends Service {
public static boolean testConnexion;
private Timer timer;
@Override
public void onCreate() {
super.onCreate();
timer = null;
testConnexion = true;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (timer != null) {
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if (testConnexion) {
//StartConnexion
}
}
}, 1000, 60000);
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
timer.cancel();
}
}
在任何活动中 开始或停止服务。 (您可以根据需要多次调用startService,只会有一个人将运行。)
if (v.getId() == R.id.startService) {
Intent intent = new Intent(this, MyService.class);
startService(intent);
} else if (v.getId() == R.id.stopService) {
Intent intent = new Intent(this, MyService.class);
stopService(intent);
}
暂停操作(但不是终止服务)
MyService.testConnexion = false;
重启
MyService.testConnexion = true;
您的服务与您的活动无关。 如果您的活动中断,您的服务将继续运行。
我希望这可以帮到你