티스토리 뷰
안드로이드 로컬 서비스를 이용한 액티비티와 서비스 통신.
액티비티에서 서비스 함수를 호출 하거나, 서비스에서 액티비티 함수를 호출하는 방법.
이 방법은 로컬서비스 바인딩 방법으로, 서비스를 앱내에서 품고 있는 경우에만 동작함.
public class MainActivity extends Activity {
//액티비티에서 선언.
private MainService mService; //서비스 클래스
//서비스 커넥션 선언.
private ServiceConnection mConnection = new ServiceConnection() {
// Called when the connection with the service is established
public void onServiceConnected(ComponentName className, IBinder service) {
MainService.MainServiceBinder binder = (MainService.MainServiceBinder) service;
mService = binder.getService(); //서비스 받아옴
mService.registerCallback(mCallback); //콜백 등록
}
// Called when the connection with the service disconnects unexpectedly
public void onServiceDisconnected(ComponentName className) {
mService = null;
}
};
//서비스에서 아래의 콜백 함수를 호출하며, 콜백 함수에서는 액티비티에서 처리할 내용 입력
private MainService.ICallback mCallback = new MainService.ICallback() {
public void recvData() {
//처리할 일들..
}
};
//서비스 시작.
public void startServiceMethod(View v){
Intent Service = new Intent(this, MainService.class);
bindService(Service, mConnection, Context.BIND_AUTO_CREATE);
}
//액티비티에서 서비스 함수 호출
mService.myServiceFunc();
}
서비스 클래스 구현부...
public class MainService extends Service {
//서비스에서 선언.
//서비스 바인더 내부 클래스 선언
public class MainServiceBinder extends Binder {
MainService getService() {
return MainService.this; //현재 서비스를 반환.
}
}
private final IBinder mBinder = new MainServiceBinder();
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
//throw new UnsupportedOperationException("Not yet implemented");
return mBinder;
}
//콜백 인터페이스 선언
public interface ICallback {
public void recvData(); //액티비티에서 선언한 콜백 함수.
}
private ICallback mCallback;
//액티비티에서 콜백 함수를 등록하기 위함.
public void registerCallback(ICallback cb) {
mCallback = cb;
}
//액티비티에서 서비스 함수를 호출하기 위한 함수 생성
public void myServiceFunc(){
//서비스에서 처리할 내용
}
//서비스에서 액티비티 함수 호출은..
mCallback.recvData();
}
위와같이 하면 서비스와 액티비티간 통신이 가능함.
'전공 > 안드로이드' 카테고리의 다른 글
| 안드로이드 화면 회전시 주의사항. (0) | 2016.03.16 |
|---|---|
| 안드로이드 상태바 notification 올리기. (0) | 2016.03.16 |
| zxing 바코드 라이브러리 이용기 - zxing 이용한 나만의 바코드 스캐너 만들기 (48) | 2015.05.18 |
| zxing 바코드 라이브러리 이용기 - 스캔 영역 조절 하기 (2) | 2015.05.14 |
| [안드로이드] AppWidget 설정 값 저장하기. SharedPreferences 이용하기. (0) | 2011.08.11 |
댓글
