Android - 如何在指定时间在后台下载数据

时间:2010-07-13 02:24:33

标签: java android background sync

我很抱歉没有任何代码可以发布,主要是因为我不能为我的生活找出我需要做的事情。

基本上,在白天指定的时间间隔(例如5 P.M),我希望我的应用程序从我的服务器下载一些数据并将其存储在设备上。这既可以减少我的服务器上的负载,也不会减少每次运行应用程序时下载数据的负担,并减少用户的加载时间,这样当他们去使用应用程序时,最新的数据已经存在于他们的设备上

我完全不知道如何做到这一点。我知道如何下载数据就好了,但现在如何在后台下载就像我正在计划的那样。它甚至可能吗?

我不是要求任何人为我做这件事,但有人可以指出我正确的方向。

3 个答案:

答案 0 :(得分:15)

使用AlarmManager

  

此类提供对系统警报服务的访问。这些允许您安排应用程序在将来的某个时间运行。当警报响起时,系统会广播已为其注册的Intent,如果目标应用程序尚未运行,则会自动启动它。设备处于休眠状态时会保留已注册的警报(如果设备在此期间关闭,则可以选择将设备唤醒),但如果设备关闭并重新启动,则会清除设备。

用它来开始Service

  

服务是一个应用程序组件,表示应用程序希望在不与用户交互的情况下执行较长时间运行的操作,或者为其他应用程序提供要使用的功能。

API Demos包含一个警报服务示例(在“应用程序”部分中),其中包含:

  

演示如何安排导致服务启动的警报。当您想要安排启动长时间运行操作的警报时,这非常有用,例如检索最近的电子邮件。

特别是,请参阅AlarmService.java以获取使用AlarmManager计划稍后唤醒服务的示例,并参阅AlarmService_Service.java以获取有关如何响应该警报的示例。 API演示的AndroidManifest.xml包含相关的服务和活动定义:

    <service android:name=".app.AlarmService_Service" android:process=":remote" />

    <activity android:name=".app.AlarmService" android:label="@string/activity_alarm_service">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.SAMPLE_CODE" />
        </intent-filter>
    </activity>

答案 1 :(得分:3)

写一个Service

使用AlarmManager

答案 2 :(得分:0)

  

有人可以指出我正确的方向。

AlarmManagerServiceAsyncTaskBroadcastReceiver

    <receiver android:name=".receiver.BootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>