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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Frai32
0 / 2 / 0
Регистрация: 24.08.2013
Сообщений: 137
#1

Оптимизация приложения - Программирование Android

03.03.2015, 13:27. Просмотров 996. Ответов 5
Метки нет (Все метки)

Дорогие форумчане!Работаю над приложение. Его смысл в том что бы заполнять таблицу случайными полями из других таблиц. Есть таблица с общими данными, а есть таблицы поля которых будут выбираться в зависимости от выбора пользователя. Выбор происходит следующим образом:
1) С начало появляется диалог предлагающий пользователю выбрать 1 из таблиц.
2) Потом появляется окно генерации где по нажатию кнопки генерируется случайное число, это число равно id поля в таблице, после генерации идёт проверка со списком если этого номера там нет , то поле добавляется если число там есть то генерируется ещё одно число и так пока не будет совпадений.
вот как происходит проверка.
Java
1
2
3
4
5
while(ObjectivList.contains(Res))
{   
    if (ObjectivList.contains(Res))
        Res = random.nextInt(6);
                        }

Если нужны ещё какие нибудь подробности то спрашивайте.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2015, 13:27     Оптимизация приложения
Посмотрите здесь:

Оптимизация приложения - Программирование Android
Здравствуйте, уважаемые форумчане, подскажите пожалуйста в трех вопросах. 1)Допустим, что приложение генерит текст из нескольких...

Оптимизация приложения. Слишком часто вызывается GC - Программирование Android
Требуются некоторые разъяснения по работе GC и некоторая помощь в оптимизации. Есть два проблемных места, в обоих очень часто...

C# оптимизация приложения под разные экраны(не GUI) - Программирование Android
Здравствуйте. Дело в том, что изначально я делал игру(2d в Unity через спрайты) под 1366x768, но при запуске на других разрешениях...

Из приложения А проверить наличие установленного на устройстве приложения В - Программирование Android
Извиняюсь за нубский вопрос. Подскажите в андроид есть возможность из приложения А проверить наличие установленного на устройстве...

Ошибка при вызове приложения из другого приложения - Программирование Android
Сделано два простеньких приложения и я хочу чтобы одно приложение запускало другое. В приложении, которое будет запущено установлен фильтр...

Запуск приложения из другого приложения - Программирование Android
Привет товарищи! Имеется два приложения. Задача следующая: Из первого приложения запустить второе, да так, что бы второе приложение...

Запуск приложения из другого приложения - Программирование Android
Собственно вопрос уже назван в теме: есть приложение, как по нажатии кнопки запустить другое, которое уже есть в системе Android? Как это...

Оптимизация обоев - Программирование Android
Товарищи, такой вопрос. Есть пара обоин, созданных с помошью юнити и эклипса. Выкладывать не буду, пока лиц.код не вставлю. Но есть...

Оптимизация кода - Программирование Android
Глупый и очень обширный вопрос, но как оптимизировать код? У меня есть приложение, которое занимает озу телефона около 30 Мб, приложение, в...

Оптимизация AVD - Программирование Android
Ребят, помогите разобраться! В общем, ситуация такая: недавно начал изучать java, потихоньку начал работать в eclipse, добрался до шага...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
03.03.2015, 13:52     Оптимизация приложения #2
Frai32, перечитал раз 5, ничего не понял. Что Вы хотите сказать-то?
Да и код какой-то странный. While(condition) -> if (condition), масло масляное.
Frai32
0 / 2 / 0
Регистрация: 24.08.2013
Сообщений: 137
03.03.2015, 14:37  [ТС]     Оптимизация приложения #3
У меня приложение зависает когда идёт генерация случайного числа.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
03.03.2015, 15:01     Оптимизация приложения #4
Frai32, так понятно, while цикл не заканчивается.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
03.03.2015, 15:02     Оптимизация приложения #5
Frai32, Конечно зависает, нельзя так делать потому что. Вообще даже если число от 0 до 1000000 есть небольшой шанс лупа, а при шести разных значениях дак вообще шанс огромный. Но скорее всего у вас просто есть уже все числа от 0 до 6 в таблице, вот и виснет - т.к. любое число, какое бы не получилось уже есть в таблице.
Frai32
0 / 2 / 0
Регистрация: 24.08.2013
Сообщений: 137
04.03.2015, 08:18  [ТС]     Оптимизация приложения #6
Тогда мне нужен правильный цикл что бы не зависало, суть в том что повторяющихся значений быть не должно.

Добавлено через 48 секунд
и от 0-6 это только при определённых условиях, есть ещё генирация из 30 чисел.

Добавлено через 17 часов 7 минут
В общем проблему решил генерацией случайного числа путём перемешивания массива.Но появилась другая проблема начало появляться исключение:
Java
1
 android.database.CursorIndexOutOfBoundsException: Index 6 requested, with a size of 6
С начало я думал что дело в курсоре когда он получает значение 6 то не может перейти по индексу и зависает, решил убрать 6 из из массива, но не помогло. Не могу разобраться что происходит и как это можно исправить.

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
                Collections.shuffle(array);
                
                int Res = array.get(0);
 
                        //Если выбран элемент в списке со значением 0
                if (PositionOfSpiner==0)
                {
                               //и если значение случайного числа меньше 6
                    if(Res<6)
                    {
                                        //если в счётчике уже есть число то создаём новое пока не будет совпадений
                        while(ObjectivList.contains(Res))
                        {   
                            
                            Collections.shuffle(array); 
                             Res = array.get(0);
                        }
 
                        //Добавляем поле из таблицы на активити
                        genirator(Res,sID,sName,sDiscription,Acursor);
                        GenirateObjective(Acursor);
                    }
                               //если больше 6 то по аналогии 
                     if (Res>6)
                        {
                    while(ObjectivList.contains(Res))
                    {   
                        Collections.shuffle(array); 
                        Res = array.get(0);
                    }
                    cursor.moveToFirst();
                                    
                    genirator(Res,sID,sName,sDiscription,cursor);
                        }
                }
                else if (PositionOfSpiner>0)
                {
                    if(Res<6)
                    {
                        while(ObjectivList.contains(Res))
                        {   
                            
                            Res = random.nextInt(7);
                        }
 
                        
                        genirator(Res,sID,sName,sDiscription,Acursor);
                        GenirateObjective(Acursor);
                    }
                     if (Res>=6)
                    {
                        while(ObjectivList.contains(Res))
                        {   
                            
                            Res = random.nextInt(30);
                        }
 
                                
                        genirator(Res,sID,sName,sDiscription,cursor);
                    }
                }
код методов

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
//этот метод добавляет реузультат на активити
private void genirator(int Res, String sID, String sName, String sDiscription, Cursor cursor)
    {
        cursor.moveToFirst();
                //проходим по списку..
        for(int i = 0; i<ObjectivList.size(); i++)
        {
                //если похожего числа там нет то..
            if ( !ObjectivList.contains(Res))
            {
                         //добавляем его в список
                ObjectivList.add(Res);
                                 //перемещаем курсор на позицию равную этому  числу
                cursor.moveToPosition(Res);
                                //заполняем текстовые поля
                sID = cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_TID));  
                sName = cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_NAME)); 
                sDiscription = cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_DS));
                GenirateObjective(cursor);
                tvObjective.setText(sID +" : "+sName);
                tvDiscription.setText(sDiscription);
 
            }
      
          
        }
Java
1
2
3
4
5
6
7
8
9
10
        //Метод добавляющий в таблицу новое поле.
    private void GenirateObjective(Cursor cursor)
    {
         db.addRec(cursor.getInt(cursor.getColumnIndex(DBExport.COLUMN_ID)), 
                   cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_NAME)), 
                   cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_DS)),
                   cursor.getInt(cursor.getColumnIndex(DBExport.COLUMN_TID)));
                 // cursor.getInt(nameColIndexCO));
         cursor1.requery();
    }
Yandex
Объявления
04.03.2015, 08:18     Оптимизация приложения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru