ANDROID:是否可以创建数据库并每隔100秒在其中保存一些信息

时间:2011-12-29 10:50:15

标签: android timer alarmmanager

我在Spinner中收集一些信息,这些信息可以改变

例如某些东西可能会消失或者可能会出现新的东西

我希望应用程序每100秒在数据库中存储此信息

可以做这样的事吗?

我正在考虑创建一个数据库并在此数据库中存储此信息

但我不确定这个“每100秒”部分,我该怎么做?

我想也许我将不得不创建一个并行运行的process,这个过程将有一个时间计数器,当100秒过去时,该函数将把信息存储在将调用数据库

但我不确定这是否可行。我的意思是,创建一个与其他应用程序并行运行的计数器。

也许有更容易的事情

提前致谢

4 个答案:

答案 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