7

我很抱歉没有发布任何代码,主要是因为我一生都无法弄清楚我需要如何做我需要做的事情。

基本上,在一天中的指定时间间隔(例如下午 5 点),我希望我的应用程序从我的服务器下载一些数据并将其存储在设备上。这是为了减少我的服务器上的负载,因为每次运行应用程序时都要下载数据,并减少用户的加载时间,这样当他们去使用应用程序时,最新的数据已经在他们的设备上.

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

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

4

3 回答 3

15

使用警报管理器

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

用它来启动一个服务

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

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

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

特别是,请参阅AlarmService.java以了解使用 AlarmManager 安排稍后唤醒服务的示例,并参阅AlarmService_Service.java以了解如何响应该警报的示例。API Demo 的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>
于 2010-07-13T02:51:03.930 回答
3

写一个服务

使用警报管理器

于 2010-07-13T05:46:17.773 回答
0

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

AlarmManager ,服务, AsyncTask , BroadcastReceiver

    <receiver android:name=".receiver.BootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
于 2010-07-13T07:16:23.073 回答