我有一个Android服务,我将它绑定到一个活动,并在destroy上解除绑定。问题是,当应用程序关闭时,它从无中断开始,有时当我打开设备时,有时候我会知道它开始是因为吐司的消息。让我们来看看代码......
活动onCreate
Intent intent = new Intent(this, Sincronizacao.class);
this.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
this.startService(intent);
mConnection的代码
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
serviceBound = true;
localBinder = (LocalBinder<Sincronizacao>) service;
}
public void onServiceDisconnected(ComponentName className) {
serviceBound = false;
localBinder = null;
}
};
并且在销毁
@Override
protected void onDestroy() {
super.onDestroy();
if (serviceBound && mConnection != null) {
unbindService(mConnection);
}
Intent intent = new Intent(this, Sincronizacao.class);
stopService(intent);
localBinder = null;
}
在我的服务中,onStartCommand被实现,在那里我开始一个线程,它查询一个Web服务并将数据插入一个数据库,该线程有一段时间(true),我只是打断它的onDestroy方法的服务..
修改:
这是清单行
android:name="com.company.package.service.Sincronizacao" />
我已经在这个bug中挣扎了一段时间,希望你能帮助我。
谢谢,
答案 0 :(得分:3)
我能够解决问题...在服务中,我将代码从onStartCommand
移到onBind
。我没有遇到任何问题,因为我只是在竞标状态下使用该服务。
此外,之前我使用thread.interrupt()
在服务中停止了线程,现在我在while中使用了一个标志,并在onUnbind
和onDestroy
上将其设置为false。