使用AsyncTask在Android上实现异步http请求

发布于 2024-11-02 18:35:05 字数 335 浏览 1 评论 0原文

我正在为网络服务构建这个客户端。 几乎所有东西都会向服务器发出请求,现在我所做的是,打开一个新线程并将所有请求放在同一个线程中。这意味着我在线程内以串行方式发出所有请求,这会导致用户等待大量时间。为了使应用程序更快,我想以异步方式发出每个服务器请求。

我有一个 Networking 类,可以处理我需要的所有 HTTP 请求,并且我正在考虑创建它,以便每个请求都启动自己的线程。

我正在考虑使用 ASyncTask 来实现此目的,但我注意到使用 ASyncTask 我需要为每个 http 请求提供一个类(用于 GET、POST、PUT 等的类)。这是最好的方法吗?有没有更有效/更干净的方法来做到这一点?你们有什么建议。

I'm building this client for a web service.
Pretty much everything makes requests to a server and now what I do is, I open a new thread and put all my requests in the same thread. That means I'm making all my requests in a serial way inside the thread and that turns into a lot of waiting for the user. Aiming to make the application faster, I want to make every server request in an asynchronous way.

I have a Networking class that handles all the HTTP requests I need and I'm thinking of making it so that every request starts its own thread.

I'm thinking of using ASyncTask for this but I noticed that with ASyncTask I'd need a class for each of my http requests (a class for GET, POST, PUT, etc). Is that the best way of doing it? is there a more efficient/clean way of doing this? What do you guys suggest.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑾夏年华 2024-11-09 18:35:05

似乎一个设计决策将完全取决于您的目的。 Android 中有多种执行任务的方法,具体取决于用户是在等待某些数据,还是在后台任务完成后稍后收到通知。

我建议您查看 这篇 文章进行比较Android中的各种任务机制。除此之外,还要查看 java.util.concurrent 包。

很抱歉,这不是一个具体的答案,但请听我的——这主要取决于你如何为用户服务。所以只能提出想法。希望这有帮助。

Seems like a design decision that will depend on exactly what you are up to. There are various ways in Android to execute tasks depending on whether the user is waiting for some data or is being notified later on once the background task completes.

I would suggest you to look at this post that compares various task mechanisms in Android. Apart from this also go through the java.util.concurrent package.

I'm sorry this is not a concrete answer, but take it from me - it mostly depends on how are you trying to serve the user. So one can only suggest ideas. Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文