如何在Android中每24小时更新一次数据库
在我的应用程序中,我使用一个按钮来更新我的sqlite数据库,但现在我想每24小时自动更新一次数据库。我该怎么做?我试过使用倒计时,但当我的应用程序不运行时,它就不起作用了。我尝试了pending Intent and Alarm Manager,但它不能正常工作(注意:我测试了10秒而不是24小时)。当我开始我的活动时,它第一次起作用,然后它停止并且不起作用。以下是我尝试的代码:如何在Android中每24小时更新一次数据库,android,sqlite,alarmmanager,android-pendingintent,Android,Sqlite,Alarmmanager,Android Pendingintent,在我的应用程序中,我使用一个按钮来更新我的sqlite数据库,但现在我想每24小时自动更新一次数据库。我该怎么做?我试过使用倒计时,但当我的应用程序不运行时,它就不起作用了。我尝试了pending Intent and Alarm Manager,但它不能正常工作(注意:我测试了10秒而不是24小时)。当我开始我的活动时,它第一次起作用,然后它停止并且不起作用。以下是我尝试的代码: public class Activity_Settings extends ActionBarActivity{
public class Activity_Settings extends ActionBarActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent notificationIntent = new Intent(mActivity, MyAlarmService.class);
PendingIntent contentIntent = PendingIntent.getService(mActivity, 0,
notificationIntent,0);
AlarmManager am = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
am.cancel(contentIntent);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ AlarmManager.INTERVAL_DAY * 1, AlarmManager.INTERVAL_DAY *
1, contentIntent);
}
}
服务类别:
public class MyAlarmService extends Service {
@Override
public void onCreate() {
// TODO Auto-generated method stub
Intent mainIntent = new Intent(this,Activity_Settings.class);
Toast.makeText(this, "MyAlarmService.onCreate()", Toast.LENGTH_LONG).show();
// update database
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "MyAlarmService.onBind()", Toast.LENGTH_LONG).show();
return null;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "MyAlarmService.onUnbind()", Toast.LENGTH_LONG).show();
return super.onUnbind(intent);
}
}
请检查以下链接。使用alarm manager在repeat task中添加服务,然后写入广播接收器以接收引导事件以再次注册repeat task,因为它将在手机重新启动后擦除您的注册事件。从我的角度来看,还有一种方法是在更改设备日期时调用该服务 而用户将在那个时打开应用程序,检查数据,若日期改变,那个么之前的日期,然后调用服务
您的24小时服务将在后台运行,如果连续检查时间并等待24小时,也可能会加载。您应该使用
AlarmManager
来安排您的服务任务。
采取以下步骤:
- 定义并实现更新服务类中DB的方法
- 定义负责调用服务类来执行任务的
BroadcastReceiver
- 在活动中,使用
计划任务AlarmManager
这正是(不完全)你想要做的。不太了解,所以不会对此发表评论。添加后台服务类,并在24小时更新后拨打电话。您是否尝试将ALM设置为24小时?如果它能工作,你可以使用相同的代码同步数据库。我已经24小时没有尝试过了,但我已经尝试了10秒,但它不能正常工作。当我关闭应用程序时,服务将停止。请查看此链接以了解任务计划:谢谢!我会试试这个:)希望这会对你和其他游客在未来有所帮助。