2016-12-29 3 views
0

サーバーからサーバーにデータを送信しているアクティビティからサービスを開始します。 onCreate()メソッドでサービスが開始されると、setExact()メソッドでアラームも設定されます。私の問題は、のBroadcastReceiverが呼び出されたときに、私はサービスを停止したいと思います。それはcorectlyで動作していますが、もう一度やり直すことになります。次のコードでサービスを停止します。アクティビティから呼び出された場合、正しく動作するサービスは次のコードで停止します。BroadcastReceiverからサービスを終了できません

Intent i = new Intent(context, SocketService.class); 
context.stopService(i); 

BroadcastReceiverが実行されると、アクティビティはそのサービスにバインドされないので、すぐに再作成することなく停止する必要があります。

答えて

1

あなたのサービス。

private Intent myservice; 

myservice = new Intent(this, myservice.class); 
    startService(myservice); 

また、あなたがハンドラを使用してサービスを開始することができます)メソッドのonCreate(上のサービスを開始し

そして停止用ハンドラです。 BroadcastReceiverで使用するハンドラの

private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
      case 1: 
        stopService(myservice); 
       break; 
      default: 
       Log.d("STOP", msg.what + " ? "); 
       break; 
     } 
    } 
}; 

この

handler.sendEmptyMessage(1); 
作ります
関連する問題