Как сохранить пока (true) от блокировки в Android - PullRequest
0 голосов
/ 25 декабря 2011

У меня небольшая проблема в моем проекте Android.

Я хотел бы делать что-то каждую 1 секунду, но проблема в том, что у меня есть что-то еще, что нужно сделать между этими 1сек.попытался сделать цикл while (true) с wait(1000) внутри, но проблема в том, что этот цикл блокирует все остальные инструкции.

Каким было бы обходное решение / решение для этого?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011

Я бы рассмотрел сценарий потоков. Если вы работаете с обновлениями пользовательского интерфейса, вы можете использовать postDelayed, чтобы вы могли обновить свой пользовательский интерфейс с помощью Runable. Вы также можете вызвать Runable из Runable.

View.postDelayed(new Runnable() {
            public void run() {
                // do work
            }
        }, 1000);

Редактировать: Исходя из вашего комментария, вы можете повторно вызывать вашу функцию.

public void PrendrePhoto() {
        String nom = "CameraPhoto";
        double x;
        camera = Camera.open();
        capteurBdd = new CapteursBDD(null);
        while (true) {
            camera.takePicture(null, null, null);
            x = 10;
            ValeursCapteur capteur = new ValeursCapteur(nom, x, 0, 0);
            capteurBdd.insertValeursCapteur(capteur);
            Log.i(null, "GPS = " + x);
            try {
                findViewById(R.id.mainView).postDelayed(predrePhotoRunnable, 1000);
            } catch (InterruptedException ex) {
            }
        }
    }

    private Runnable predrePhotoRunnable = new Runnable() {
        public void run() {
            PrendrePhoto();
        }
    };
0 голосов
/ 25 декабря 2011

Вы можете использовать асинхронные задачи в Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...