我希望每分钟都能将数据存储在数据库中。对于相同的我应该使用Service,AsyncTask或其他任何东西。我经历了各种各样的链接,这让我更加困惑。
我阅读了开发人员指南并了解了getWritableDatabase
数据库升级可能需要很长时间,您不应该从应用程序主线程中调用此方法,
然后我首先想我会使用AsyncTask然后关于这个
理想情况下,AsyncTasks应该用于短操作(最多几秒钟。)
之后我想我可以使用服务然后关于服务
服务不是线程。它本身不是从主线程开始工作的手段(以避免应用程序无响应错误)。
在这里,我无法理解应该使用什么来定期在数据库中存储数据。请严格帮助我。
提前致谢
答案 0 :(得分:0)
你不能在UI线程上做很多工作,所以制作数据库操作你可以选择不同的方法,其中很少我喜欢使用的方法如下所示;
here是关于android
中线程池的开发者文档和this是IntentService的文档
<强>更新强>
这将每分钟向您的服务发送一个意图,而不会在您的活动中使用任何处理器时间
Intent myIntent = new Intent(context, MyServiceReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 60); // first time
long frequency= 60 * 1000; // in ms
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), frequency, pendingIntent);
在检查之前是否确实需要在每分钟启动一项服务。或者,如果您可以使用一个服务来检查每分钟的数据更改,那么启动新服务可能会消耗比检查自身更多的资源。
更新2
private ping() {
// periodic action here.
scheduleNext();
}
private scheduleNext() {
mHandler.postDelayed(new Runnable() {
public void run() { ping(); }
}, 60000);
}
int onStartCommand(Intent intent, int x, int y) {
mHandler = new android.os.Handler();
ping();
return STICKY;
}
这是一个简单的例子,你可以做到