0

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

干杯

4

6 回答 6

0

退房AlarmManager(正如柴图所说)以及IntentService.

于 2012-09-04T17:34:16.570 回答
0

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

请注意,服务与其他应用程序对象一样,在其托管进程的主线程中运行。这意味着,如果您的服务要执行任何 CPU 密集型(例如 MP3 播放)或阻塞(例如网络)操作,它应该生成自己的线程来完成这项工作。更多信息可以在进程和线程中找到。IntentService 类可作为 Service 的标准实现使用,它有自己的线程来安排要完成的工作。

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

我希望这有帮助。

于 2012-09-04T17:35:07.390 回答
0

最好使用服务。使用AlarmManager 调用服务。在服务中编写向服务器发送请求的代码

于 2012-09-04T17:29:41.610 回答
0

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

Whilethread是一个并发执行单元。您可以将两者用于您的目的,另一个选项是RunnableHandler可以每 30 秒调用一次操作或代码

于 2012-09-04T17:33:55.870 回答
0

我建议您编写一个IntentService而不是一个简单的服务,并在其中编写一个静态方法,以 30 秒的退避时间向服务器发送请求,并在您的活动中启动该服务。

于 2012-09-04T17:42:42.480 回答
0

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

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

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

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

于 2015-08-15T02:44:57.200 回答