2012-05-27 4 views
0

내 응용 프로그램 레이아웃은 다음과 같습니다.핸들러에서 문자열 반환 ...

MainActivity 
    | 
    Service 
    |__Handler 
     |__Runnable 

Runnable에서 인터넷에서 String을 검색합니다. 그것이 중요하다면, 의도에 맞게 충분히 작습니다. String을 MainActivity로 다시 전달하여 업데이트되었음을 ​​알리고 싶습니다.

어떻게하면됩니까?

+0

브로드 캐스트를 만들거나 MainActivity를 결과로 추가 문자열로 시작하기 만하면됩니다. – xandy

+0

들어오는 수신기를 나가는 데 어떻게 연결할 수 있습니까? 몇 가지 범위 문제가있는 것 같습니다. –

+0

답변에 넣을 게 – xandy

답변

1

두 가지 방법 :

모두의 Runnable에서의 Runnable

  • 시작 MainActivity에서 방송을 만들기는 의도에서, 여분의 결과를 문자열로 넣어 필요합니다.

    처리기 및 Runnable이 서비스에서 인라인 클래스라고 가정하면 Context에 액세스 할 수 있습니다. 그렇지 않은 경우 서비스 컨텍스트를 해당 클래스에 전달해야합니다.

    > There seem to be some scope issues. 
    

    아니, 어떤 클래스는 Context.sendBroadcast 또는 Context.startActivity를 호출 할 수 있으며, 메인 스레드에서 수행 할 필요가 없습니다.

  • +0

    매니페스트를 포함하여 모든 것이 올바르게 설정되어 있다고 생각합니다. 하지만 브로드 캐스트를 보낼 때마다 ClassNotFoundException이 계속 발생합니다. java.lang.ClassNotFoundException : com.stevenschoen.appname.MainActivity.IncomingReceiver (이름이 변경됨) IncomingReceiver 클래스는 어디에 두어야합니까? –

    +0

    Activity 내에서 Receiver를 내부 클래스로 만들고 registerReceiver()를 호출 할 수 있습니다 (Acitivty.onStop()에서 등록 취소해야 함). 단점은 활동이 죽으면 결과를받지 못할 것입니다. – xandy

    +0

    이제 완벽하게 작동합니다. 정말 고마워! –