마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

액티비티 서비스간 양방향 통신

0 추천

서비스는 소켓 서버의 기능을 하고있구요 여러개의 액티비가 소켓서비스로 부터 값을 얻어오거나 보내주기를 해야하는데요 브로드 캐스트 리시버를 이용해서 서비스에서 액티비티로의 통신은 성공했는데 액티비티에서 sendbroadcast를이용하는 경우는 서비스에서 브로드캐스트 리시버가 동작을 하지않습니다 onBroadcast함수에 로그를 넣어봤는데 로그조차 뜨지를 않네요 어느 부분 부터 확인해봐야할까요

액티비티의 소스

protected void onStart(){
    super.onStart();

  //  Intent intent = new Intent(this,SocketService.class);
  //  bindService(intent, mConnection, Context.BIND_AUTO_CREATE);

    Intent AnotherActivity =new Intent("ActivityState");
    AnotherActivity.putExtra("StateActivity","Start");
    sendBroadcast(AnotherActivity);

}
 
서비스의 소스
public void onCreate() {

    serverThread = new ServerThread();
    //serverThread.setDaemon(true);
    serverThread.start();

    activityReceiver = new ActivityReceiver();
    IntentFilter SVintentFilter = new IntentFilter();
    SVintentFilter.addAction("ActivityState");
    registerReceiver(activityReceiver, SVintentFilter);


}

private class ActivityReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("ServiceBrReceiver","Wokring"+ActivityDescriptor);
        if(intent.getAction().equals("ActivityState")){
           ActivityDescriptor = intent.getStringExtra("StateActivity");

        }
    }
}
계절풍M (270 포인트) 님이 2017년 6월 29일 질문

3개의 답변

0 추천
 
채택된 답변

필터는 이렇게

this.registerReceiver(receiver, filter);

onDestroy()에서

this.unregisterReceiver(receiver);

브로드케스트 리스버는 다음과 같이 (클래스가 아닙니다.)

private final BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent i) {
        String action = i.getAction();
        Log.e(TAG, action);
...
Will Kim (43,170 포인트) 님이 2017년 6월 29일 답변
계절풍M님이 2017년 7월 6일 채택됨
0 추천
aucd29 (218,390 포인트) 님이 2017년 6월 30일 답변
0 추천

나는 그렇지 못해서 미안하는 데 도움 당신

spanish to english

patricia 님이 2017년 6월 30일 답변
...