2

我正在编写一个向一堆不同服务发出 http 请求的 Android 库。目前,我在 AsyncTask 中发生了 http 请求,并在 onPostExecute 方法中回调应用程序提供的委托,并提供结果。因此,基本上开发人员调用他们想要的方法而不用担心创建 AsyncTask。

但是,我开始怀疑我是否应该异步进行这些调用,或者让库完全同步,并让开发人员负责将方法调用放在他们的应用程序中的 AsyncTasks 中。有没有关于这样的事情的最佳实践?

4

3 回答 3

2

根据我参与多个具有广泛 API 的项目的经验,在大多数情况下,我们决定提供异步 API,最终,我们不得不提供额外的同步 API,或者使用新的同步 API 淘汰旧的异步 API。

当我编写 API 时,我会尽量避免对最终用户的任何假设。我认为您会发现以下有趣的内容(或者我希望如此): 如何编写好的 API

于 2011-07-26T18:29:26.117 回答
1

如果您想要严格,请将异步任务放在您的库中,这样开发人员就别无选择,只能异步执行请求(这已在您的库中完成)。

但是,如果您想更加灵活,请让开发人员决定是否要将其置于异步状态。

如果我是你,我会将决定权留给开发人员,因为库的目的是执行请求并获得结果,而不是如何执行请求。这样,您的库将适合任何开发人员的愿望,而不是相反。

于 2011-07-26T18:31:55.567 回答
-1

我认为在你的库中异步调用是个好主意。Activity要在收到数据时通知调用,您应该Class在请求和处理完成后在类中调用的抽象方法中定义该方法。然后使用您的用户Class将必须实现该方法,并且在处理完成时将调用该方法。例如:

    public class ProcessingClass{
        private void processData(){
             //Async processing
             .....
             onProcessComplete();
        }
        public abstract void onProcessComplete(){

        }
    }

然后让我们在你的活动中说你可以做这样的事情:

    private class MyProcessingClass extends ProcessingClass{
        @Override
        public void onProcessComplete(){
             //The task is complete...
             //Update UI or something like this...
        }
    }
于 2011-07-26T18:21:44.347 回答