ANDROID: возможно ли создать базу данных и сохранять в ней некоторую информацию каждые 100 секунд - PullRequest
1 голос
/ 29 декабря 2011

Я собираю некоторую информацию внутри Spinner, и эта информация может измениться

например, что-то может исчезнуть или может появиться что-то новое

Я хочу, чтобы приложение сохраняло эту информацию каждые 100секунд в базе данных

возможно ли сделать что-то подобное?

Я думаю о создании базы данных и в этой базе данных, хранящей эту информацию

, ноЯ не уверен насчет этой части " каждые 100 секунд ", как бы я это сделал?

Я думаю, что, возможно, мне придется создать process, который будетпри параллельной работе этот процесс будет иметь счетчик времени, а по прошествии 100 секунд функция, которая будет хранить информацию в базе данных, будет называться

Но я не уверен, возможно ли это.Я имею в виду создание такого счетчика, который будет работать параллельно с другим приложением.

возможно, есть что-то более простое

заранее спасибо

Ответы [ 4 ]

1 голос
/ 29 декабря 2011

У меня есть такое же требование, и я сделал это в Моем приложении, используя CountDownTimer и создал один Custom Class, расширяющий CountDownTimer, и в этом случае, когда Finish, я просто сделал выполнить загрузку моих данных и инициализировать тот же объект agian для запуска после использования Start

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();

и в onDestroy вашей Деятельности напишите этот код для отмены Таймера.

MCObject.cancel();
1 голос
/ 29 декабря 2011

Вторая мысль: Это, вероятно, не путь (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: Как использовать AlarmManager

0 голосов
/ 29 декабря 2011

Я думаю, что лучший способ - создать прослушиватель, который будет проверять изменения данных.Если он обнаружит какое-либо изменение данных, он вызовет функцию, которая сохранит данные в базе данных.

Вы можете использовать SQLite

0 голосов
/ 29 декабря 2011

Я не вижу причин, почему это не могло быть сделано. (Единственная проблема в том, что, возможно, вам через некоторое время не хватит места для хранения, если вы планируете постоянно вставлять новые данные)

Чек ScheduledThreadPoolExecutor http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html

Android изначально поддерживает SQLite, поэтому вы можете использовать его в качестве базы данных.

...