Форум программистов, компьютерный форум CyberForum.ru

Как правильно составить цикл который выполняет каждую команду с разной паузой - Android - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android При переходе между активити возникает ошибка http://www.cyberforum.ru/android-dev/thread1521735.html
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Дело в том, что при вызове активити в моем приложении возникает ошибка и программа вылетает. Возможно дело не в неправильном объявлении активити или его перехода, агде-то ещё в коде.. Высылаю код в котором скорее всего ошибка: // 1-ая активити case R.id.button5: int iii = 0; for (int ii =...
Android Анимация Fragment Здравствуйте, такой вопрос. как прикрутить эту анимацию: <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500"> </alpha> http://www.cyberforum.ru/android-dev/thread1521695.html
Объект Context Android
Проблема такая: Я создаю новый класс в отдельном файле для работыSQLite и в нем мне нужен Объект Context, если я наследую Activity public class DbNumberMessage extends Activity { ... dbHelper = new DBHelper(this); ... class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) { super(context, "DB", null, 1);
Android Алгоритм сравнение двух списков list, для синхронизации таблицы
Добрый день форумчане. Очень нужна ваша помощь, срочно. Необходимо сделать синхронизацию локальной таблицы с таблицей загруженной из сервера. Было принято решение поэтапно сравнивать два списка(локальный список и серверный). Первоначально, списки были отсортированы. Далее осталось в этапном сравнивании по id. Если id в локальном списке есть, а в серверном нет, то удаление из локальной бд...
Android Изменение хэша файла, и редактирование самого файла http://www.cyberforum.ru/android-dev/thread1521477.html
Здравствуйте, нужна помощь, собственно я написал взлом на игру The Simpsons Tapped Out (может быть кто то слышал о такой), так вот, что бы взлом работал нужно изменить файл 0, но вот в чем беда, я не знаю какой программой можно его изменить, так же нужно изменить хэш этого файла и прописать туда размер отредактированных xml файлов из файла 1, приложу архив с файлами, файл 1 открывается простым...
 

Показать сообщение отдельно
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
29.08.2015, 21:39     Как правильно составить цикл который выполняет каждую команду с разной паузой - Android
Takt!k, если я правильно понял, то:
1. Создаём класс-обёртку для byte[] и delay (я его сделал внутренним):

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
private class Data {
        private byte[] data;
        private long delay;
 
        private Data(byte[] data, long delay) {
            this.data = data;
            this.delay = delay;
        }
 
        private long toMS() {
            return delay * 1000l;
        }
    }
2. Создаём коллекцию таких данных, и парочку переменных
Java
1
2
private ArrayList<Data> data = new ArrayList<>();
    private int currentIndex;
3. Метод заполнения:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void populateCollection() {
        data.add(new Data(new byte[]{1, 0x5, 11, 5, 0, 0}, 10L));
        data.add(new Data(new byte[]{1, 0x5, 11, 1, 0, 0}, 0L));    //0 сек
        data.add(new Data(new byte[]{1, 0x5, 0, 5, 0, 0}, 30L));      //30 сек
        data.add(new Data(new byte[]{1, 0x5, 1, 5, 0, 0}, 5L));      //5 сек
        data.add(new Data(new byte[]{1, 0x5, 2, 5, 0, 0}, 5L));      //5 сек
        data.add(new Data(new byte[]{1, 0x5, 3, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 4, 5, 0, 0}, 5L));      //5 сек
        data.add(new Data(new byte[]{1, 0x5, 5, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 6, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 7, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 8, 5, 0, 0}, 5L));            //5 сек
 
    }
Ну и то, что будет нам печатать:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public void start(final boolean reverse) {
        //Проверяем инциализацию коллекции
        if (data.isEmpty()) {
            //Пусть начальный элемент 0
            currentIndex = 0;
            //Но если идём в обратную сторону - последний
            if (reverse) currentIndex = data.size() - 1;
            //Заполняем коллекцию
            populateCollection();
        }
        //Запускаем хэндлер. Если в обратную сторону, то delay из последнего элемента, если нет - то из первого
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //Текущий элемент. При первом прямом проходе он будет нулевой
                Data currentData = data.get(currentIndex);
                //Send!
                addCRC(currentData.data);
                //Если идём в обратную сторону - уменьшаем на 1, иначе увеличиваем
                if (reverse) {
                    currentIndex--;
                } else {
                    currentIndex++;
                }
                //Если дошли до конца или до начала - очищаем коллекцию
                if ((reverse && currentIndex == -1) || (!reverse && currentIndex == data.size())) {
                    data.clear();
                    return;
                }
                //Иначе перезапускаем себя же.
                new Handler().postDelayed(this, data.get(currentIndex).delay);
 
 
            }
        }, reverse ? data.get(0).toMS() : data.get(data.size() - 1).toMS());
    }
Вот весь класс:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import android.os.Handler;
 
import java.util.ArrayList;
 
public class DelayedPrinter {
 
    private ArrayList<Data> data = new ArrayList<>();
    private int currentIndex;
 
    private void populateCollection() {
        data.add(new Data(new byte[]{1, 0x5, 11, 5, 0, 0}, 10L));
        data.add(new Data(new byte[]{1, 0x5, 11, 1, 0, 0}, 0L));    //0 сек
        data.add(new Data(new byte[]{1, 0x5, 0, 5, 0, 0}, 30L));      //30 сек
        data.add(new Data(new byte[]{1, 0x5, 1, 5, 0, 0}, 5L));      //5 сек
        data.add(new Data(new byte[]{1, 0x5, 2, 5, 0, 0}, 5L));      //5 сек
        data.add(new Data(new byte[]{1, 0x5, 3, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 4, 5, 0, 0}, 5L));      //5 сек
        data.add(new Data(new byte[]{1, 0x5, 5, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 6, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 7, 5, 0, 0}, 5L));            //5 сек
        data.add(new Data(new byte[]{1, 0x5, 8, 5, 0, 0}, 5L));            //5 сек
 
    }
 
    public void start(final boolean reverse) {
        //Проверяем инциализацию коллекции
        if (data.isEmpty()) {
            //Пусть начальный элемент 0
            currentIndex = 0;
            //Но если идём в обратную сторону - последний
            if (reverse) currentIndex = data.size() - 1;
            //Заполняем коллекцию
            populateCollection();
        }
        //Запускаем хэндлер. Если в обратную сторону, то delay из последнего элемента, если нет - то из первого
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //Текущий элемент. При первом прямом проходе он будет нулевой
                Data currentData = data.get(currentIndex);
                //Send!
                addCRC(currentData.data);
                //Если идём в обратную сторону - уменьшаем на 1, иначе увеличиваем
                if (reverse) {
                    currentIndex--;
                } else {
                    currentIndex++;
                }
                //Если дошли до конца или до начала - очищаем коллекцию
                if ((reverse && currentIndex == -1) || (!reverse && currentIndex == data.size())) {
                    data.clear();
                    return;
                }
                //Иначе перезапускаем себя же.
                new Handler().postDelayed(this, data.get(currentIndex).delay);
 
 
            }
        }, reverse ? data.get(0).toMS() : data.get(data.size() - 1).toMS());
    }
 
 
    private class Data {
        private byte[] data;
        private long delay;
 
        private Data(byte[] data, long delay) {
            this.data = data;
            this.delay = delay;
        }
 
        private long toMS() {
            return delay * 1000l;
        }
    }
 
}
Добавлено через 23 минуты
Цитата Сообщение от YuraAAA Посмотреть сообщение
//Иначе перезапускаем себя же.
* * * * * * * * new Handler().postDelayed(this, data.get(currentIndex).delay);
ошибка тут, вместо delay надо toMS();
 
Текущее время: 02:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru