Android服务随机/自动启动

时间:2012-09-24 23:22:59

标签: android multithreading android-service

我有一个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中挣扎了一段时间,希望你能帮助我。

谢谢,

1 个答案:

答案 0 :(得分:3)

我能够解决问题...在服务中,我将代码从onStartCommand移到onBind。我没有遇到任何问题,因为我只是在竞标状态下使用该服务。

此外,之前我使用thread.interrupt()在服务中停止了线程,现在我在while中使用了一个标志,并在onUnbindonDestroy上将其设置为false。