Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
18 / 13 / 5
Регистрация: 08.01.2016
Сообщений: 315

Проблемы общего характера

29.12.2018, 23:54. Показов 733. Ответов 3
Метки нет (Все метки)

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

1. В своем приложении я использую шторку (Navigation Drawer Activity). При создании нового активти - Студия автоматически создает кучу файлов (менюшки, контейнеры и т.д.). Вопрос: можно ли создать одну активити по макету, а к другим активити просто прикрутить шторку? Или надо под каждое активити создавать все файлы данного Навигейшн? К примеру, я файлы-разметки менюшек не трогаю, а вот Мейны приходится клонировать, так как в них есть includе`ы, которые в свою очередь содержат разметку экрана. (Млин, как-то сложно получилось объяснить, сорр).

2. Что такое утечка памяти? Как этого избежать? Чего надо опасаться?
3. У меня есть класс, который я посвятил исключительно чтению данных из БД. Там у меня куча методов с разными входящими параметрами, и в каждом методе объявлено что-то вроде:
Java
1
2
3
4
 HDbHelper mDbHelper = new HDbHelper(this);
 
    SQLiteDatabase db = mDbHelper.getWritableDatabase();
...
А в активи я вызываю нужный мне метод, создавая объект класса (причем много раз) например вот так:
Java
1
ReadClass Prochitat = new ReadClass(this);
... а потом через Prochitat вызываю нужный мне метод, который в свою очередь читает данные из БД. Вопрос: правильная ли это организация работы? Если нет, то как сделать все правильно? Просто, мне кажется, многовато я объектов создаю!?

4. Есть ли в Студии функция - что-то вроде облачного программирования? Ну, к примеру на работе попечатал чуть, сохранил. Пришел домой, и не надо все копировать, просто зашел в Инет, синхронизировался и продолжил работу?

5. Какие функции Студии упрощают Вам работу? Ну, например, я недавно узнал, что зажав Контр+Альт можно сделать несколько курсоров и одновременно менять данные в разных частях кода, что ну просто спасает когда большой объем однотипного кода надо менять. Что-то в этом роде...

Заранее спасибо!
Всех с наступающим Новым Годом! Добра, счастья Вам и Вашим близким!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.12.2018, 23:54
Ответы с готовыми решениями:

EF6, миграция общего характера
Есть следующая типовая задача - версия ПО на пользовательской машине обновилась, нужно привести структуру БД к требуемой. При этом на...

Интересы общего характера: Finalize() и Lazy<T>
Читаю Троелсена. Появились некоторые вопросы. Чтобы не создавать две темы, решил сделать одну и назвать ее более обобщенно. Итак: 1....

Turbo Delphi - Delphi (Pascal) | Тема общего характера
Добрый вечер, уважаемые пользователи форума! Подскажите, пожалуйста.. &quot;Интегрированная среда Turbo Delphi - язык программирования Delphi...

3
111 / 89 / 29
Регистрация: 07.01.2017
Сообщений: 456
30.12.2018, 07:42
Elkatib,

Добавлено через 10 минут
Elkatib,

1. если правильно понял - тебе нужно сделать навигацию со шторкой. Есть вариант использовать фрагменты вместо Activity (есть документация на русском яхыке тут: https://developer.android.com/... ents?hl=ru , либо туториалы и прочее). Кратко - фрагменты могут находиться в одной Activity и использовать элементы этой Activity (обращаться к шторке, Toolbar и прочее);
2. не отвечу, так как не сталкивался;
3. тебе лучше вынести все, что связано с обращением к БД (объекту) в отдельный класс, Синглтон, который будет инициализироваться при старте, завершаться после выхода из приложения;
4. "Gitlab" посмотри, там есть возможность создавать приватные репозитории на обычном аккаунте;
5. https://developer.android.com/... -shortcuts , по началу будет не удобно, но, как начнешь пользоваться активно - привыкнешь.

И тебя с праздником.
1
18 / 13 / 5
Регистрация: 08.01.2016
Сообщений: 315
30.12.2018, 15:20  [ТС]
jaman_smk, Спасибо большое за ответ. Я еще не читал все, что Вы предложили, но обязательно попытаюсь вникнуть!!!
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
05.01.2019, 01:19
Elkatib, отвечу про базы данных и про утечку памяти
БД:
1. потокобезопасный класс-синглтон(гуглите), где каждый метод открывает/закрывает соединение:
Java
1
2
3
4
5
6
7
public int updateSpecialMessage(SpecialMessage updatingItem,SpecialMessage updatedItem){
       //открыл соединение
        SQLiteDatabase db = this.getWritableDatabase();
        //получил нужные данные и закрываю соединение
        db.close();
        return result;
    }
2. Не забывайте проверять и закрывать курсоры!
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 ArrayList<SpecialMessage> getAllSM()
    {
        ArrayList<SpecialMessage> list = new ArrayList<SpecialMessage>();
        // открываем соединение
        SQLiteDatabase db = this.getReadableDatabase();
 
        try
        {
            String sql = "SELECT *  FROM "+TABLE_SPECIAL_MESSAGES;
           // получили курсор
            Cursor c = db.rawQuery(sql, null);
 
            // проверка курсора
            if (c!=null && c.moveToFirst())
            {
                SpecialMessage sm;
                do
                {
                    sm = new SpecialMessage(c.getString(1),c.getString(2),c.getString(3),c.getInt(4),c.getString(5));
                    list.add(sm);
                }
                while (c.moveToNext());
            }
         // Закрываем курсор
            c.close();
        }
        catch (SQLiteException sqle)
        {
            throw  sqle;
        }
 
        
        db.close(); // закрываем соединение
 
        return list;
    }
3. Работа с БД только в фоновом потоке!

Теперь по поводу утечек памяти, проверяются они разными утилитами, самая известная канарейка - LeakCanary( гуглите),они возникают, например, когда вы подписались,но не отписались на BroadcastReciever - ы или у вас статичная ссылка на активити висит и в некоторых случаях при работе с Handler-ами, и т.д. И связано это с тем, что сборщик мусора (Garbage Collector) не может убрать из памяти объект, потому что на нем висят активные ссылки в памяти, даже при том, что вашему аппу он уже не нужен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.01.2019, 01:19
Помогаю со студенческими работами здесь

Нахождение наибольшего общего делителя и наименьшего общего кратного двух натуральных
Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел (НОК(А,В)= А*В/ НОД...

Нахождение наибольшего общего делителя и наименьшего общего кратного двух чисел
Задача на функции 1. Составить программу нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел...

Нахождение наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел
1.Составить программу с использованием процедуры нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных...

Составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел
составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел НОК(A,B)=A*B/НОД(A,B)

Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел
Доюрый день! помогите пожалуйста мне решить задачей Организация процедур, использование процедур Составить программу для нахождения...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru