【问题标题】:Android - How to download data in the background at specified timesAndroid - 如何在指定时间在后台下载数据
【发布时间】:2010-07-13 02:24:33
【问题描述】:

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

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

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

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

【问题讨论】:

标签: java android background sync


【解决方案1】:

使用AlarmManager

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

用它来启动Service

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

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

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

特别是,请参阅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>

【讨论】:

  • @Kyle,我已经更新了我的答案,为您指明了正确的方向。
  • 感谢您的帮助。这是完美的。
【解决方案2】:

写一个Service

使用AlarmManager

【讨论】:

    【解决方案3】:

    有人能指出我正确的方向吗?

    AlarmManagerServiceAsyncTaskBroadcastReceiver

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

    【讨论】:

    • 这是一个答案还是一个问题?没有解释没有链接等对不起-1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    相关资源
    最近更新 更多