我在Spinner中收集一些信息,这些信息可以改变
例如某些东西可能会消失或者可能会出现新的东西我希望应用程序每100秒在数据库中存储此信息
可以做这样的事吗?
我正在考虑创建一个数据库并在此数据库中存储此信息
但我不确定这个“每100秒”部分,我该怎么做?
我想也许我将不得不创建一个并行运行的process
,这个过程将有一个时间计数器,当100秒过去时,该函数将把信息存储在将调用数据库
但我不确定这是否可行。我的意思是,创建一个与其他应用程序并行运行的计数器。
也许有更容易的事情
提前致谢
答案 0 :(得分:1)
关于第二个想法: 这可能不是要走的路(AlarmManager)。更好的方法是将侦听器绑定到微调器。这样,只有在需要保存的新数据时,您才会做出反应并保存数据。
您能否提供一些您正在使用的Spinner的详细信息,也许我们可以计算出事件绑定。
对于存储,请使用SQlite:http://developer.android.com/reference/android/database/sqlite/package-summary.html
对于100秒间隔,请使用AlarmManager:
此类提供对系统警报服务的访问。这些允许 你安排你的应用程序在运行中的某个时刻运行 未来。当闹钟响起时,已注册的意图 因为它是由系统广播,自动启动目标 应用程序,如果它尚未运行。注册的警报是 在设备处于睡眠状态时保留(并且可以选择唤醒设备) 设备如果在那段时间内关闭,但如果它会被清除 关闭并重新启动。
http://developer.android.com/reference/android/app/AlarmManager.html
请查看此答案以获取代码示例并进一步讨论:Android: How to use AlarmManager
答案 1 :(得分:1)
我有一些相同的要求,并使用 CountDownTimer 在我的应用程序中完成此操作
并创建一个Custom Class
扩展CountDownTimer
,当Finish
时,我刚刚执行我的数据加载并初始化相同的对象agian,以便在使用Start <之后运行/ p>
public class MyCounter extends CountDownTimer {
public MyCounter(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
MCObject.cancel();
MCObject = new MyCounter(_intMCCounter, 1000);
MCObject.start();
new tempAysnc().execute(paramList); // code to get data or store data write your code to insert data into database
}
@Override
public void onTick(long millisUntilFinished) {
}
}
在您的Activity onCreate()中编写此代码以首次启动它。
_intMCCounter = 60000 * 5; //set interval to every 5 minutes
MCObject = new MyCounter(_intMCCounter, 1000);
MCObject.start();
并在您的Activity的onDestroy中编写此代码以取消Timer。
MCObject.cancel();
答案 2 :(得分:0)
我认为没有任何理由不能这样做。 (如果您计划不断插入新数据,可能问题是您可能会在一段时间后用完存储空间)
检查ScheduledThreadPoolExecutor
http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html
Android原生支持SQLite
,因此您可以将其用作数据库。
答案 3 :(得分:0)
我认为更好的方法是创建一个侦听器来检查数据更改。如果它发现任何数据更改,那么它会进行函数调用,将数据存储在数据库中。
您可以使用SQLite