서비스에서 다른 Activity(.java) 안의 method 호출 (브로드 캐스트)

java > 서비스로 작동하는 .java 파일을 열어서 아래 코드를 상단에 넣어 임포트 시켜준다.

import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;

그리고 public class MyService extends Service{ 이렇게 보이는 서비스 클래스 안에 아래 코드를 넣어준다.
//브로드 캐스트 보내기
private void sendMessage() {
      Intent intent = new Intent("naminsik");
      intent.putExtra("message", "전달하고자 하는 데이터");
      LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}

위에 보면 “naminsik” 은 통로 같은 역할을 한다고 보면 된다.   이제 받는 쪽에다 저 통로를 맞춰서 데이터를 받으면 된다.

 

이제 다른 Activity(.java)에 서비스로 부터 신호를 받는 역할을 만들자.

java > MainActivity.java 와 같이 호출할 메소드가 있는 Activity를 열어 상단에 아래 코드를 넣어 임포트 시켜준다.

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

그리고 public class SubActivity extends AppCompatActivity{ 이렇게 보이는 클래스 안에 아래 아래 코드를 넣어준다.
@Override
public void onResume() {
      super.onResume();
      LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
      new IntentFilter("naminsik"));
}

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
            String message = intent.getStringExtra("message");
            //CallYourMethod(message); 실행시킬 메소드를 전달 받은 데이터를 담아 호출하려면 이렇게 한다.
      }
};

@Override
protected void onPause() {
      LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
      super.onPause();
}

 

TOP