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(); }
안녕하세요 좋은 정보 너무나 감사합니다.
//CallYourMethod(message); 실행시킬 메소드를 전달 받은 데이터를 담아 호출하려면 이렇게 한다.
여기 부분에 어떻게 메소드를 넣어주면 될까요?
안녕하세요. 위에 만드신 코드로 보면
sendmassage_loop(); 이 부분을 그 아래 코드와 순서를 바꿔서
---------아래처럼 수정하시면 됩니다.
String message = intent.getStringExtra("message");
sendmassage_loop(message);
그리고 밑에 받는 쪽에
public void sendmassage_loop() 부분을
public void sendmassage_loop(abc)
로 바꾸면 abc가 위에 전달시킨 message의 값이 들어옵니다.
답변 정말 너무 감사드립니다.
Mainactivity에서
일단 이렇게 했고,
Service화면에서
이렇게 했는데 Mainactivity에서 함수가 호출되어서 5초마다 실행하려고 하는 것인데
함수 호출이 안되는데 이게 맞는 것일까요?
정말 사례드리고 싶네요 너무 감사합니다. ㅠㅠ