2016-06-18 7 views
0

サービス自体を停止する必要があり、stopSelfメソッドを使用しますが、サービスは停止しません。stopself()サービスが動作しない

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

    int hour = MainActivity.sa3a; 
    int minute = MainActivity.dakika; 
    java.text.DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
    Date date = new Date(); 
    System.out.println(dateFormat.format(date)); 
    int x = date.getHours(); 
    int y = date.getMinutes(); 
    String n = String.valueOf(x); 
    Toast.makeText(send.this,n, Toast.LENGTH_SHORT).show(); 
    if (hour == x && minute == y) { 
     Toast.makeText(send.this, "start", Toast.LENGTH_SHORT).show(); 
     send.this.stopSelf(); 
     Toast.makeText(send.this, "stop_Self_is_Not_work", Toast.LENGTH_LONG).show(); 
    } else { 
     Toast.makeText(send.this, "yOKKKKKK", Toast.LENGTH_LONG).show(); 
    } 

    return START_STICKY; 
} 
+1

「stopSelf」は機能していないと思いますか? – Karakuri

+0

stop_Self_is_Not_workトーストがショーです!ストップ自身がこのトーストを働かせている場合は、@ Karakuriを表示しない –

+2

サービスが停止しているかどうかを確認する方法ではありません。このメソッドは 'send.this.stopSelf()'の行で停止することはありません。メソッドが終了すると、システムが停止してもトーストが表示されます。電話設定で実行中のサービスのリストを見つけて、そこにサービスがリストされているかどうかを確認してください。 – Karakuri

答えて

1

サービスが実際に停止していることを確認するには、onDestroy()コールバックをオーバーライドする必要があります。 onDestroyメソッドで表示するトーストを作成し、次にトーストが表示されるようにstopSelf()を呼び出します。

現在の状態のトーストが表示されていない場合は、条件が満たされていないことを意味します。その条件からstopSelfを呼び出すだけであれば、サービスは停止しません。必要に応じてサービスを停止するためには、さらに条件を確認する必要があります。

+0

@AbdAljbbarAmmarこの答えのように 'onDestroy() 'を実装しようとしましたか? –

-1

onStartCommand()のstartService()メソッドから開始するサービスが呼び出されていることを確認する必要があります。 bindService()を使用している場合は、ロジックをonBind()メソッドにダウンロードします。

+0

あなたのコードを見れば、それは論理的な問題になると思います。条件 "if(時間== x &&分== y) "が発生しないことがあります。サービスを閉じる別の条件を試してください。 if(時間<= x &&分<= y) –

+0

"**はonStartCommand()が**と呼ばれていますか?どのようにして呼び出すことはできません。 –

+0

サービスのライフサイクルを以下に示します。 onStarCommandは、起動 https://developer.android.com/guide/components/services.html https://developer.android.com/images/service_lifecycle.png –

関連する問題