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(); }