4

我有一个 android 服务,我将它绑定到一个活动,并且在销毁时未绑定。问题是,当应用程序关闭时,它会从无到有,有时当我打开设备时,有时会随机启动,我知道它是由于 toast 消息而启动的。让我们进入代码...

创建活动

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 服务并将数据插入数据库的线程,该线程有一段时间(真),我只是中断它服务的 onDestroy 方法......

编辑

这是清单行

android:name="com.company.package.service.Sincronizacao" />

我已经在这个错误中挣扎了一段时间,希望你能帮助我。

谢谢,

4

1 回答 1

3

我能够解决问题...在服务中,我将代码onStartCommandonBind. 从那以后我没有任何问题,我只是在投标状态下使用该服务。

另外,以前我用 停止服务内的线程thread.interrupt(),现在我在 while 中使用一个标志,并将它设置为 false ononUnbindonDestroy

于 2012-09-28T01:39:21.780 回答