안드로이드-서비스, 방송 수신자,
on receive -> set broadcast
액티비티 - 인터페이스 담당한다.
액티비티 서비스 다 상속받아 기술하면 된다.
둘 다 자동으로 실행되는 메소드가 있다?
서비스는 startService를 통해 서비스 실행시키면 온스타트커맨드 자동 실행되면서 동작
서비스 실행자는 스타트 서비스 하는 순간 서비스는 만들어진다. 생성자 호출되는 경우가 없다(new~)
온스타트커맨드가 실행되는데 안에는 별 내용이 없다. 우리가 그 안을 오버라이딩 하면 된다. 이것이 구조임
두번째 온 바인드가 실행되는 형식 바인드서비스~ 온 바인드가 실행된다. 복잡한 과정을 거친다. 연결됬는지.... 서비스가 서버로 동작을 한다.
서비스를 실행시킨 액티비티는 클라이언트~ 연결됬다 끊어졌다 알려주는 메소드가 있어야한다... 이럴 때 자동으로 실행되는 메소드가 존재한다.
2개의 메소드가 존재한다. 어디에 존재하느냐? 클래스 안에 존재해야한다. 이 2가지 메소드를 포함하는 클래스는 서비스커넥션 클래스~~
자동으로 동작하게 하려면 바인더할때 연결해야하는 동작이 필요함 이 커넥션 객체를 인수로 전달해줘야함
온바인드가 자동으로 실행되는데 리턴되는 값은 아이바인더 그 아이바인더가 리턴되는데 그 리턴되서(받아서)실행되는 메소드가 있다.
이런 메소드들도 구성되어있는게 바인드방식의 서비스
바인드 서비스를 하는 이유는 서비스에 메소드 2개정도 넣고 클라이언트(액비티비)에서 그 서비스를 실행시키기 위해서이다.
그 서비스에 있는 메소드를 호출해서~ 실행되는 어떤 값을 읽어온다던가 할 때...
그럴려면 리턴되는 아이바인더를 통해 받아야함?
554p ~
서비스 살아있는 것 new로 해서 가져올 수 없으니 약간 복잡한 과정을 거친다.
아이바인더에 의해 리턴되어서 오면 이 아이바인더의 값은 커넥션객체에 접속했다고 알려주는 메소드의 인수로 온다.
이때 아이바인더를 로컬바인더로 캐스팅하니까 이 때 서비스 객체의 주소를 얻어온거
getService를 보니까 여기서 로컬바인더의 안에 리턴값이 로컬서비스 이 값을 mService에 넣어놓고
이 mService는 액티비티 안에 있는 외부변수 여기에 주소 넣으니까 이제 호출 가능하다?
방송수신자~
방송수신자는 단점이 하나 있다. 서비스와 같이 sendBroadcast 를 통해 실행되는데 broadcast상속받아서 해야함....
근데 느낌상 다르다... 서비스는 계속 돌고 방송 수신자는 한 번만 딱!! 보여주면 된다?
Broadcast는 onReceive가 자동으로 실행되는데 그러면 BR은 자동으로 삭제된다.(BR에서 사용했던 변수도 모두 사라짐)
자동으로 실행되려면 intent필터가 필요!! 어떠한 상황에서 자동으로 실행되도록 등록만 해놓으면 된다.!!
*intent필터에 대한 개념을 알야하 한다.
568p를 보자
Log.i("tag","Message"); i대신에 .e .d 등등 있다. i e d는 구분하는거.... information error debug? 등 등...
로그를 보고 permission을 달아주면 된다.
Manifest에 직접 Permission을 줘야함
572p 실행되는 br을 만들고 싶으면 인텐트필터에 등록 시키면 된다.
ADD 액션 ~~ 574P 예제를 보자
576p telnet 접속을 통해 원거리 연결(전송)