2011-11-08 9 views
5

onCreate()の間にスレッドを開始するサービスがあります。スレッドはハードウェア(IOIO)を監視しており、切断されると終了しますので、本質的に無限ループです。アクティビティからサービスを停止すると正常に動作し、スレッドも停止します(onDestory()で終了)。スレッド内からAndroidサービスを停止する

私の問題は、スレッドが死亡した場合、それはそれを生み出しサービスを停止することが可能である(例外のためと言う)ということです。

私は、スレッドコード内からstopSelf()を使用してみましたが、サービスは停止しません。

ので、私が従っているはずです欠落している規則を言い訳してください PS私の最初の投稿をいただき、ありがとうございます。

答えて

3

は、私はあなたがHandlerを使用するかもしれない、ここで何をしたいと思います。つまり、Sevrice用のハンドラを作成します(すべてのスレッドで使用できるように、最終的なものであることを確認してください)。次に、あなたの他のスレッドで、

myServiceHandler.post(new Runnable(){ 
    public void run(){ 
    stopSelf(); 
    } 
} 
+0

恐ろしいので、それは働いていましたか? –

+0

ありがとうだけ何が必要でした – user1035795

+0

私は同じ問題があり、私はこの解決策を試しました。しかし、私はstopSelf()がmsinスレッドから実行されていることがわかります...しかし何も起こりません。その後、サービスはまだインテントに応答します。どんな手掛かり? –

0

を呼び出してください。サービスのインテントを格納して直接停止するのはどうですか?サービスで :サービス内のスレッドで

private Intent thisIntent; 

public int onStartCommand (Intent intent, int flags, int startId) { 

    thisIntent = intent; 

stopService(thisIntent);