powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Глобальные переменные и разные потоки.
11 сообщений из 11, страница 1 из 1
Глобальные переменные и разные потоки.
    #37633198
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Не ругайте сильно, я еще не очень хорошо знаю Java.

Программа для Android.
Задача: требуется наличие в программе глобального объекта, содержащего строковый массив с информацией о состоянии программы (логгер).

Создаю класс со статическим массивом:
Код: 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.
public class FoxLog {

	private static ArrayList<String> logList = new ArrayList<String>();
	
	public static int count()	{
		synchronized(logList)	{
			return	logList.size();
		}
	}
	
	public static String get(int index)	{
		synchronized(logList)	{
			return	logList.get(index);
		}		
	}

	//Send a DEBUG log message.
	static public int d(String tag, String msg)	{
		add('D', tag, msg);
		return	Log.d(tag, msg);
	}
	// Send a ERROR log message
	static public int e(String tag, String msg)	{
		add('E', tag, msg);
		return	Log.e(tag, msg);
	}

}

Метод add для краткости исключил.

Проблема в том, что программа (для Андроид) исполняется в двух WM. Основной поток – GUI и Сервис, так вот похоже переменная logList разная для основного потока и для сервиса.
Как решить данную проблему?

С Уважением,
Александр.
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37633230
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для уточнения: судя по отладчику разные части программы(GUI и сервис) выполняются не просто в разных потоках, а к разных VirtualMachine...
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37633771
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisichkinДля уточнения: судя по отладчику разные части программы(GUI и сервис) выполняются не просто в разных потоках, а к разных VirtualMachine...для логгинга можно воспользоваться стандартными средствами Андроида. Если уж совсем не подходит, то смотреть на сервисы или интенты (плаваю в терминологии, потому направляю в доку).
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37633842
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начни с объяснений, нахрена такой лисапед
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37633961
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторначни с объяснений, нахрена такой лисапед
Требуется дать возможность конечному пользователю отправлять данные разработчику для анализа.
Можно читать данные из LogCat, но это доп. права программе.
Спрашивается зачем сначала писать в LogCat а потом читать из него? Если можно перед записью записывать во внутренний буфер?
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37633962
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не въеду никак..
Гуй и сервис - это два разных приложения или два разных класса одного приложения?
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37633973
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что вам необходимо получить из двух различных потоков одного приложения доступ к общей переменной?
Или у вас два независимых приложения (читай - процесса)?
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37634014
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное Android Java и Java это немного разные вещи :(
Приложение ОДНО. Но по технологии Google/Dalvik VM внутри одного приложения можно поместить одновременно разные классы, отвечающие и за GUI и за Services и BroadcasrReceivers(Приемники сообщений)

В Android есть возможность любому приложению(системному или нет, но при наличии прав) писать в "общий" для системы лог - CatLog.
Процедуры Log.d/Log.e/Lod.w и т.д из import android.util.Log;
Так вот, писать туда могут все, а чтобы читать, нужны определенные права права ( ну и несколько строк кода)

Вот я и подумал, что можно перед вставкой в CatLog записать (нужные только мне данные) в "свой" буфер.

?????????
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37634016
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описался - писать в LogCat права не нужны, читать - нужны.
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37634137
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisichkinНаверное Android Java и Java это немного разные вещи :(
Приложение ОДНО. Но по технологии Google/Dalvik VM внутри одного приложения можно поместить одновременно разные классы, отвечающие и за GUI и за Services и BroadcasrReceivers(Приемники сообщений)


Что в данном случае вы понимаете по классами? Классы as is, т.е. абстракция множества объектов, отдельные dex-файлы или что-то еще?

На дает покоя вот это:
LisichkinПроблема в том, что программа (для Андроид) исполняется в двух WM. Основной поток – GUI и Сервис , так вот похоже переменная logList разная для основного потока и для сервиса.



Т.е. программы (процессов) - две и они каким-то образом взаимодействуют, или же из одной VM стартует другая VM? Как два класса одного приложения(процесса) могут выполняться под разными экземплярами VM?
...
Рейтинг: 0 / 0
Глобальные переменные и разные потоки.
    #37634316
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
^ozzy^ Как два класса одного приложения(процесса) могут выполняться под разными экземплярами VM?
Вот у меня это тоже в голове не укладывается..
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Глобальные переменные и разные потоки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]