Android服务或线程

时间:2012-09-04 17:25:35

标签: android multithreading service android-service

嗨,在Android中,我需要在应用程序运行时每隔30秒向服务器发送一次请求,而不会干扰用户。在服务或线程或具有新线程的服务中执行此操作是否明智?

干杯

6 个答案:

答案 0 :(得分:0)

最好使用Service。使用AlarmManager来调用服务。在服务中写入发送请求的代码到服务器

答案 1 :(得分:0)

服务:服务是一个应用程序组件,表示应用程序希望在不与用户交互的情况下执行较长时间运行的操作

虽然thread是并发执行单元。您可以将两者用于您的目的,而另一个选项是RunnableHandler,您可以每30秒调用一次操作或代码< / p>

答案 2 :(得分:0)

查看AlarmManager(如Chaitu所说)以及IntentService

答案 3 :(得分:0)

我建议您使用服务而不是创建一个线程。 Android开发者网站声明如下:

  

请注意,服务与其他应用程序对象一样,在main中运行   他们的托管过程的线程。这意味着,如果您的服务是   要做任何CPU密集型(如MP3播放)或阻塞(如此   作为网络)操作,它应该在其中产生自己的线程   做那个工作。有关这方面的更多信息,请参阅流程和   线程。 IntentService类作为标准提供   具有自己的调度的线程的Service的实现   它的工作要做。

由于服务在UI线程中运行,您应该在服务中创建一个新线程,该线程每30秒向服务器发出一次请求。

我希望这会有所帮助。

答案 4 :(得分:0)

我建议你写一个 IntentService 而不是一个简单的服务,在里面写一个静态方法向服务器发送请求,退避时间为30秒,并在你的活动中开始服务。

答案 5 :(得分:0)

简单回答 - “您应该使用服务还是线程?”

即使用户没有与您的应用程序交互,服务也只是一个可以在后台运行的组件。因此,只有在您需要的时候才应创建服务。

如果您需要在主线程之外执行工作,但只有在用户与您的应用程序交互时,您应该创建一个新线程而不是服务。

请记住,如果您确实使用了服务,它默认仍会在您的应用程序的主线程中运行,因此如果它执行密集或阻塞操作,您仍应在服务中创建新线程。