Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Глобальные переменные и разные потоки. / 11 сообщений из 11, страница 1 из 1
26.01.2012, 15:50:09
    #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
26.01.2012, 16:00:57
    #37633230
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
Для уточнения: судя по отладчику разные части программы(GUI и сервис) выполняются не просто в разных потоках, а к разных VirtualMachine...
...
Рейтинг: 0 / 0
26.01.2012, 19:17:55
    #37633771
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
LisichkinДля уточнения: судя по отладчику разные части программы(GUI и сервис) выполняются не просто в разных потоках, а к разных VirtualMachine...для логгинга можно воспользоваться стандартными средствами Андроида. Если уж совсем не подходит, то смотреть на сервисы или интенты (плаваю в терминологии, потому направляю в доку).
...
Рейтинг: 0 / 0
26.01.2012, 19:54:06
    #37633842
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
начни с объяснений, нахрена такой лисапед
...
Рейтинг: 0 / 0
26.01.2012, 21:05:59
    #37633961
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
авторначни с объяснений, нахрена такой лисапед
Требуется дать возможность конечному пользователю отправлять данные разработчику для анализа.
Можно читать данные из LogCat, но это доп. права программе.
Спрашивается зачем сначала писать в LogCat а потом читать из него? Если можно перед записью записывать во внутренний буфер?
...
Рейтинг: 0 / 0
26.01.2012, 21:06:19
    #37633962
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
Что-то не въеду никак..
Гуй и сервис - это два разных приложения или два разных класса одного приложения?
...
Рейтинг: 0 / 0
26.01.2012, 21:15:08
    #37633973
^ozzy^
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
Я правильно понимаю, что вам необходимо получить из двух различных потоков одного приложения доступ к общей переменной?
Или у вас два независимых приложения (читай - процесса)?
...
Рейтинг: 0 / 0
26.01.2012, 21:46:38
    #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
26.01.2012, 21:47:32
    #37634016
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
Описался - писать в LogCat права не нужны, читать - нужны.
...
Рейтинг: 0 / 0
26.01.2012, 23:38:44
    #37634137
^ozzy^
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные и разные потоки.
LisichkinНаверное Android Java и Java это немного разные вещи :(
Приложение ОДНО. Но по технологии Google/Dalvik VM внутри одного приложения можно поместить одновременно разные классы, отвечающие и за GUI и за Services и BroadcasrReceivers(Приемники сообщений)


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

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



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


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