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

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Построение UI для Android приложения на C# Mono http://www.cyberforum.ru/android-dev/thread1399616.html
Форумчане хочу написать приложение для android на c# mono, не подскажете есть какие нибудь программки для построения интерфейса?
Программирование Android Обновление данных адаптера Здравствуйте. Помогите, кто сталкивался. Есть список, где в зависимости от значения свойства отображенного объекта подставляется лейаут: LayoutInflater inflater = ((Activity)context).getLayoutInflater(); if (app.isRead == 0) { row = inflater.inflate(layoutResID, parent, false); } else { row = inflater.inflate(layoutResID_is_read, parent, false); }В адаптере навешаны обработчики... http://www.cyberforum.ru/android-dev/thread1399479.html
Нужен ваш совет. Игра или программа под Андроид Программирование Android
Мне в течении двух месяцев надо писать приложения под Андроид. Это должна быть или программа-виджет, которая: 1) определяет, где сейчас находится пользователь: дома, на работе, в другом помещении, на улице (здесь надо будет работать с GPS, Wi-Fi я так подозреваю) 2) в зависимости от результатов п.1 выдает пользователю набор ярлыков программ, которие установлени на телефоне, например для...
Нужно ли шифровать файлы данных на андроиде? Программирование Android
Программа использует массив строк, подгружаемых из файла res/values/strings.xml Сможет ли конечный пользователь получить доступ к данным из этого файла? Проще говоря, я не хочу, чтобы кто-то скопировал этот файл полностью, а получал из него данные посредством моей программы. Как вообще упаковываются файлы данных в конечный apk файл и где хранятся временные данные в момент работы программы на...
Программирование Android Как перенести из 3d max анимацию в приложении на андроиде? http://www.cyberforum.ru/android-dev/thread1399404.html
Единственное что приходит на ум сохранять в формате stl каждый кадр, но макросом это сделать не возможно. Может кто то знает как это делать?
Программирование Android Отключить блокировку экрана при бездействии Как можно отключить блокировку экрана, если приложение активно, но пользователь долгое время не совершал никаких действий? подробнее

Показать сообщение отдельно
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android

20.03.2015, 13:12. Просмотров 502. Ответов 4
Метки (Все метки)

У меня в параллельном потоке происходит куча apply()
Решение использовать apply вместо commit было принято из-за скорости.

Но возникает другая проблема - приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity

commit работает хорошо, но очень медленно. Я понимаю, что можно группировать put'ы и выполнять один commit после, в принципе так и разумно делать. Но от такой политики возникают другие риски: если операция слишком затянется в бекграунде, а в этот момент andorid выгрузит приложение из памяти, то все put потеряются

Из-за чего может быть ANR?

Добавлено через 15 минут
Вот накатал по-быстрому пример зависания. Надо свернуть и развернуть приложение.

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
public class Main extends Activity {
 
    boolean start = true;
 
    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
 
        setContentView(R.layout.main);
 
        final TextView tv = (TextView) findViewById(R.id.tv);
 
        new Thread(new Runnable() {
            @Override
            public void run() {
 
                while(start) {
                    SharedPreferences.Editor ed = getEditor();
                    ed.putString(getUUID(), getUUID());
                    ed.apply();
 
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            tv.setText(getSharedPreferences().getAll().size() + "");
                        }
                    });
 
                    try {
                        Thread.sleep(20);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
 
                Thread.interrupted();
            }
        }).start();
    }
 
    public static String getUUID() {
        return UUID.randomUUID().toString();
    }
 
 
    final private String BASE = "BASE";
    private SharedPreferences shadPrefBase = null;
    SharedPreferences getSharedPreferences() {
        if(shadPrefBase == null) {
            shadPrefBase = getSharedPreferences(BASE, Context.MODE_MULTI_PROCESS);
        }
        return shadPrefBase;
    }
 
 
    private SharedPreferences.Editor editorShared = null;
    private SharedPreferences.Editor getEditor() {
        if(editorShared == null) {
            editorShared = getSharedPreferences().edit();
        }
        return editorShared;
    }
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru