如何创建带有回调的Android服务?

如何创建带有回调的Android服务?,android,Android,我正在为我的应用程序开发一个服务,其目的是允许轻松访问我们正在运行的各种web服务。该服务用于在希望使用它的任何应用程序中维护登录状态,因此用户只需在服务首次启动时登录一次 让服务异步运行并在完成时回调应用程序的最佳方法是什么。目前我正在使用静态类来扩展线程,例如 private static class LogInAsync extends Thread { private Handler handler; private CallbackWrapper wrapper;

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

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

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();
}
但是这些函数只能由我自己的应用程序调用。我希望任何人都能够进行一行或两行函数调用,并且能够轻松地处理响应,最好是使用简单的回调方法


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

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

阅读以下教程:
-

-

在Google IO上,有一个关于构建REST web应用程序的会议。也许这将帮助您找到应用程序的最佳体系结构。使用线程不好(视频中解释了原因)


谢谢,但我以前使用过AIDL,据我所知,没有办法通过我的回调接口。谢谢,这段视频非常有用,我喜欢他使用Intents启动服务。但有一点我还不清楚。如何执行活页夹回调,服务如何告诉帮助程序操作已完成?您可以传递一个接口以用作回调。检查谷歌I/O应用程序。搜索丢失的文件