한 걸음 두 걸음

Service에서 Activity로 데이터 전달 본문

FrontEnd/Android

Service에서 Activity로 데이터 전달

언제나 변함없이 2019. 6. 12. 04:25
반응형

MainActivity에서

  private BroadcastReceiver mAlertReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            fromAlertStr = intent.getStringExtra("alertStr");
            ListElementsArrayList.add(fromAlertStr);
            adapter.notifyDataSetChanged();
        }
    };

로 브로드캐스트리시버 만들어주고,

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LocalBroadcastManager.getInstance(this).registerReceiver(
                mAlertReceiver, new IntentFilter("AlertServiceFilter")
        );

    }

이는 미리 등록시켜놓는다.
이제 서비스에서 데이터가 전달되어오면 mAlertReceiver가 자동으로 호출되며 코드가 실행된다.

Service내부에서는

//Activity에 보내서 ListView 업데이트할 내용
    private String fromMoveStr = "";

보낼 내용을 담을 String을 하나 두고

    fromMoveStr += formatDate.getCalendar().get(Calendar.HOUR) + "시"
                        + (formatDate.getCalendar().get(Calendar.MINUTE) - 1) + "분"
                        + formatDate.getCalendar().get(Calendar.SECOND) + "초" + "까지 "
                        +  Minutes+"분동안  "
                        + fixedState + "상태 ";

보낼 내용을 만들어두었다가


    private void sendMessage(String message) {
        Intent intent = new Intent("MoveServiceFilter");
        intent.putExtra("message", message);
        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
    }

sendMessage함수 따로 만들어서 intent를 통해 보내준다.


참고 https://goodtogreate.tistory.com/entry/Activity%EC%99%80-Service%EA%B0%84%EC%9D%98-%ED%86%B5%EC%8B%A0

반응형