如何使用回调创建Android服务?

时间:2010-07-07 14:23:49

标签: android

我正在为我的应用程序开发一项服务,其目的是允许轻松访问我们正在运行的各种Web服务。该服务用于维护任何想要使用它的应用程序的登录状态,因此用户只需在首次启动服务时登录一次。

使服务异步运行并在应用程序完成后回调应用程序的最佳方法是什么。目前我正在使用扩展Thread的静态类,如

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();
}

但这些功能只能由我自己的应用程序调用。我希望任何人能够进行一个或两个行函数调用,并且能够轻松地处理响应,最好是在一个简单的回调方法中。

我认为必须使用Intents来启动线程,但如果我这样做,我就无法传递回调。

2 个答案:

答案 0 :(得分:3)

Google IO是一个关于构建REST Web应用程序的会话。也许这将帮助您找到适合您应用的最佳架构。使用线程并不好(为什么在视频中解释)。

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

答案 1 :(得分:2)

您需要使用Service对象,然后您可以将活动绑定到它,并且他们将能够与您的服务进行通信。

阅读以下教程:
- Basics of Android : Part III – Android Services
- Remote Service Tutorial