2010-07-07 5 views
2

저는 현재 실행중인 다양한 웹 서비스에 쉽게 액세스 할 수있게 해주는 응용 프로그램 서비스를 위해 노력하고 있습니다. 이 서비스는 사용자가 서비스를 처음 시작할 때 한 번만 로그인하면되므로 사용하려는 모든 응용 프로그램에서 로그인 상태를 유지하는 데 사용됩니다.콜백을 사용하여 Android 서비스를 만드는 방법은 무엇입니까?

서비스가 비동기 적으로 실행되도록하고 응용 프로그램이 끝나면 다시 호출하는 가장 좋은 방법은 무엇입니까? 현재 내가

private static class LogInAsync extends Thread { 
    private Handler handler; 
    private CallbackWrapper wrapper; 
    private Context context; 

    protected LogInAsync(Context context, Handler handler, CallbackWrapper wrapper) { 
     this.handler = handler; 
     this.wrapper = wrapper; 
     this.context = context; 
    } 

    public void run() { 
     loginState = true; 

     wrapper.setResponse(Types.NOTHING, Functions.LOG_IN, null); 
     handler.post(wrapper); 
    } 
} 

같은 스레드를 확장 정적 클래스를 사용하고 그리고 쉽게

public static void logIn(Context context, ResponseListener callback) { 
    (new LogInAsync(context, new Handler(), new CallbackWrapper(callback))).start(); 
} 

를 호출하지만이 기능은 단지 내 자신의 응용 프로그램에 의해 호출 될 수 있도록. 누구나 한 두 라인 함수 호출을 만들 수 있고 간단하게 콜백 메소드에서 응답을 쉽게 처리 할 수 ​​있기를 바랍니다.

인트론을 사용하여 스레드를 시작해야한다는 것을 알았지 만, 그렇게 할 경우 콜백을 전달할 수 없습니다.

답변

3

는 REST 웹 응용 프로그램 구축에 대한 세션이었다. 아마도 이것은 당신이 당신의 앱을위한 최상의 아키텍처를 찾는 데 도움이 될 것입니다. 스레드를 사용하는 것은 좋지 않습니다 (왜 비디오에서 설명되는지).

http://www.youtube.com/watch?v=xHXn3Kg2IQE

+1

감사합니다.이 비디오는 엄청난 도움이됩니다. 저는 그가 Intents를 사용하여 서비스를 시작하는 것을 좋아합니다. 그러나 아직 명확하지 않은 점이 하나 있습니다. 어떻게 바인더 콜백을 수행합니까? 서비스가 헬퍼에게 작업이 완료되었음을 알리는 방법은 무엇입니까? –

+0

Intent에 인터페이스를 전달하여 콜백으로 사용할 수 있습니다. Google I/O 앱을 확인하십시오. iosched 검색 – alexanderblom

2

Service 개체를 사용해야하고 활동을 바인딩 할 수 있으며 서비스와 통신 할 수 있습니다.

는이 자습서를 읽어
- Basics of Android : Part III – Android Services
- 구글 IO에서 Remote Service Tutorial

+0

감사합니다,하지만 난 전에 AIDL을 사용하고 지금까지 내가 말할 수있는 내 콜백 인터페이스를 통과 할 수있는 방법이 없습니다. –

관련 문제