Android后台下载数据

标签 android

我想制作一个后台运行服务(独立于应用程序),每天定期从服务器下载天气数据。我已经有了从服务器下载数据并将其存储在数据库中的代码。

我想知道的是,定期运行该服务的最佳方式是什么。

最佳答案

您可以创建 Android Intent 服务:-

public class BackendService extends IntentService {
    public BackendService() {
        super("BackendService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // Your Download code
    }
}

然后设置一个警报接收器来设置调用服务的时间间隔。

public void backendscheduleAlarm() {
    // Construct an intent that will execute the AlarmReceiver
    Intent intent = new Intent(getApplicationContext(), BackendAlarm.class);
    // Create a PendingIntent to be triggered when the alarm goes off
    final PendingIntent pIntent = PendingIntent.getBroadcast(this, BackendAlarm.REQUEST_CODE,
            intent, PendingIntent.FLAG_UPDATE_CURRENT);
    // Setup periodic alarm every 1 hour
    long firstMillis = System.currentTimeMillis(); // first run of alarm is immediate
    int intervalMillis = 3000; //3600000; // 60 min
    AlarmManager backendalarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
    backendalarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, firstMillis, intervalMillis, pIntent);
}

并创建一个广播接收器类来调用该服务:

public class BackendAlarm extends BroadcastReceiver {
public static final int REQUEST_CODE = 12345;
// Triggered by the Alarm periodically (starts the service to run task)
@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, BackendService.class);
    i.putExtra("foo", "bar");
    context.startService(i);
} }

关于Android后台下载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30028547/

相关文章:

Android - 如何在不丢失动画的情况下更改水平进度条颜色

java - AndEngine setRotationCenter 移动旋转的物体

c# - 在 Xamarin.Android 中单击 RadioGroup 按钮时未选中 RadioButton

android - Facebook/Android - 如何检查用户是否已经注册,现在只需登录

android - 使用 greendao 3 从 2 个不同实体获取值

java - 从适配器中选择 Android

android - 如何从android中的firebase数据库中检索特定节点

android - 检查 Android 设备是否有搜索硬件按钮

Android IABv3 getSkuDetails 不返回 Sku 详​​细信息

java - Android 中的主页按钮覆盖。重启手机后启动问题