【问题标题】:Is services is the best way to make http request in android服务是在android中发出http请求的最佳方式
【发布时间】:2015-04-22 06:31:39
【问题描述】:

服务是向 android 中的 php 服务器发出 http 请求的最佳方式吗? 我目前正在使用 AsycTask,但不幸的是它有时会停止应用程序,所以我打算使用服务。

【问题讨论】:

  • 你的意思是停止应用程序崩溃
  • 它到底停在哪里?顺便说一句,您可以使用 AsycTask 和 Services 来执行后台操作。
  • 是的,它正在使应用程序崩溃。
  • @Gangulian 如何使用 AsyncTask 和 Services。
  • 抛出了什么异常?您可以检查 logcat 中的特定错误。不是因为异步任务或服务而发生异常,而是因为您的流程中的错误。 ]

标签: android service android-asynctask httprequest


【解决方案1】:

您必须有充分的理由来使用其中的任何一个。如果您想在应用程序处于睡眠状态时在后台执行某些操作,那么服务肯定是要走的路。 AsyncTask 生命周期基于 Activity 生命周期。如果 Activity 死了,并且您的 AsyncTask 中有一些待处理的代码,那么它可能会导致崩溃,因此在退出应用程序之前取消 AsyncTask 是一个好习惯。

但我的建议和最好的方法是在这里使用 Google Volley Library 发出 http 请求。它会为您处理一切。您可以在退出应用时轻松取消请求。

【讨论】:

    【解决方案2】:

    Http request 只能在非 UI 线程中完成。因为它可能会导致ANR(Application Not Responding),并且在Android的主线程中是被禁止的。而对于Service,它默认在主线程上运行,除非你在AndroidManifest.xml 中部署它时设置了android:process="thread-name"。因此,如果您想在自己的代码上处理 http 请求,则必须使用 AsyncTaskHandlerHandlerThread。但我建议您使用Google Volleyandroid-async-httpokHttp。因为它们封装良好且易于使用,并为您照顾好一切。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多