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

Обновление GUI с высокой частотой - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Запретить андроид выгружать активити из памяти http://www.cyberforum.ru/android-dev/thread1577904.html
Приложение работает в бэграунде, но если завершить активность вручную то бэграунд перестает работать.. именно завершить.. сворачивание, блокировка экрана нечем не мешает вопрос: 1) Если активность используется из бэграунда андроид может его выгрузить из памяти (т.е. завершить) 2) если ответ на 1 да, то как сделать так чтобы не выгружалась?
Программирование Android Извлечение метаданных из фотографии Добрый день, встала проблема: Требуется извлечь из фото данные о месте, где оно было сделано. Просьба подсказать, как бы это получше реализовать Добавлено через 58 минут Насколько успел понять, требуется извлечь gps EXIF значения http://www.cyberforum.ru/android-dev/thread1577757.html
Программирование Android Прозрачная кнопка с каемкой
Долго искал, но так и не нашел: как сделать прозрачную кнопку с прямо угольной формой с закругленными углами и белым обрамлением, так чтобы текст на ней был заданного цвета и альфа на него не распространялась
Выравнивание текста в TextView Программирование Android
Добрый день! Пытаюсь выровнять текст в TextView по центру в Linearlayout. Пробовал следующие параметры: <TextView xmlns:android="http://schemas.android.com/apk/res/android" ... android:textAlignment="center" ... </TextView>
Программирование Android Первоначальное заполнение таблицы http://www.cyberforum.ru/android-dev/thread1577627.html
Использую greenDAO, есть данные которые нужно занести в таблицу при её создании. Как реализовать? Записывать все данные в xml, потом парсить и заносить вариант не подходящий.
Программирование Android Светится красным R Добрый вечер, у меня светится красним R во всех класах. Вот пример setContentView(R.layout.eater_layout); Как это исправить? подробнее

Показать сообщение отдельно
St@nton
3 / 3 / 0
Регистрация: 04.01.2013
Сообщений: 72
12.11.2015, 00:43  [ТС]
Spelcrawler
Перестаёт висеть после некоторого времени. Но тогда и EditText перестаёт обновляться. Выглядит так, как будто EditText достигает максимального количества строк, которые он может вместить и перестаёт отображать новые строки, хотя данные по-прежнему идут.

bastrakov
Так я уже попробовал сделать, но смысла особого нет. Собираю в буфер сообщения в background-потоке, а потом в цикле прохожу по буферу и вызываю всю туже функцию onMessageRecevid(), которая должная быть вызвана в UI потоке, т.к. нужно обновить состояние UI-элемента (т.е. EditText ). Результат - всё тоже зависание.

Принимает сообщения из потока и отправляет их в UI

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
78
79
80
81
82
83
84
85
public class DataTransferHandler extends AsyncTask<String, String, String> {
 
    private SubModCallBack listener;
    private final InputStream mmInStream;
    private final OutputStream mmOutStream;
    private boolean connected;
 
    public DataTransferHandler(SubModCallBack listener, BluetoothSocket socket) throws StreamNotCreatedException {
        this.listener = listener;
        InputStream tmpIn;
        OutputStream tmpOut;
        connected = true;
        // Get the input and output streams, using temp objects because
        // member streams are final
        try {
            tmpIn = socket.getInputStream();
            tmpOut = socket.getOutputStream();
        } catch (IOException e) {
            throw new StreamNotCreatedException(
                    StringValues.STREAM_NOT_CREATED.getText());
        }
        mmInStream = tmpIn;
        mmOutStream = tmpOut;
    }
 
    @Override
    protected String doInBackground(String... strings) {
        byte[] buffer = new byte[1024];  // buffer store for the stream
        int length; // bytes returned from read()
        String msg;
 
        // Keep listening to the InputStream until an exception occurs
        while (connected) {
            try {
                // Read from the InputStream
                length = mmInStream.read(buffer);
 
                for (int i = 0; i < length; i++) {
                    msg = "" + ((char) buffer[i]);
                    // Send the obtained bytes to the UI activity
                    publishProgress(msg);
                }
            } catch (IOException e) {
                return null;
            }
        }
        return null;
    }
 
    @Override
    protected void onProgressUpdate (String...values){
        listener.onMessageReceived(values[0]);
    }
 
    @Override
    protected void onPostExecute (String result){
        closeStreams();
        if (connected) {
            listener.onConnectionLost();
        }
    }
    /* Call this from the main activity to send data to the remote device */
    public boolean write(byte[] bytes) {
        try {
            mmOutStream.write(bytes);
            return true;
        } catch (IOException e) {
            return false;
        }
    }
 
    public void stopDataTransfer() {
        connected = false;
    }
 
    /* Call this from the main activity to shutdown the connection */
    private void closeStreams() {
        try {
            mmInStream.close();
            mmOutStream.close();
        } catch (IOException e) {
        }
    }
 
}


Метод из Activity, в которой обновляется EditText

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @Override
    public void onMessageReceived(String message) {
        // append the new string
        etMessages.append(""+(msgCounter++) +"_msg: " + message + "\n");
        // find the amount we need to scroll.  This works by
        // asking the TextView's internal layout for the position
        // of the final line and then subtracting the TextView's height
        final int scrollAmount = etMessages.getLayout().getLineTop(etMessages.getLineCount()) - etMessages.getHeight();
        // if there is no need to scroll, scrollAmount will be <=0
        if (scrollAmount > 0)
            etMessages.scrollTo(0, scrollAmount);
        else
            etMessages.scrollTo(0, 0);
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru