카테고리 없음

안드로이드-서비스, 방송 수신자,

DDDS 2016. 7. 25. 10:05

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 접속을 통해 원거리 연결(전송)