Получить контекст приложения для отображения графических компонентов - PullRequest
2 голосов
/ 13 июля 2011

Я некоторое время задавался вопросом, как сделать это правильно.

Я хочу отобразить диалог или тост (или любой другой рисунок) из другого места, чем мой основной поток.

Но для этого мне нужно передать Context.

Путь грубой силы - это либо передать контекст все время, либо создать статическую переменную, в которой я храню контекст.

Эти работыно это не тот путь, так что может кто-нибудь сказать мне правильный способ завершить это:

ProgressDialog.show([...], "",[...].getResources().getString( R.string.logoutProgressMessage), true);

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

То, что вы ищете, это runOnUiThread .Это должно сделать вещи намного проще.:)

Для других классов в основном потоке попробуйте getApplicationContext .Я использовал это из других классов и служб для тостов.Например:

Контекст контекста = getApplicationContext ();
Toast toast = Toast.makeText (контекст, «Ваш таймер истек», Toast.LENGTH_LONG);
toast.show ();

1 голос
/ 13 июля 2011

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

Действительно попробуйте Не , чтобы сохранить статическую ссылку на ваш Context, поскольку это большая утечка

0 голосов
/ 13 июля 2011

Вы можете использовать статическое поле для хранения Context приложения (полученного методом getApplicationContext()), это не приведет к утечке памяти.

Пример кода, реализующего это решение, можно найти в этом вопросе

...