2014-12-24 2 views
2

В основном я создаю диалоговые окна из службы фона в цикле, что означает создание нескольких экземпляров диалогового окна.Как закрыть мероприятие Theme.dialog от сервиса?

Как это:

for(int index = 0; index < list.size(); index++){ 

    Intent intent=new Intent(getApplicationContext(), DialogActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    getApplicationContext().startActivity(intent); 
} 

В AndroidManifest.xml:

<activity 
    android:name=".DialogActivity" 
    android:label="Alert Dialog" 
    android:theme="@android:style/Theme.Dialog" > 
</activity> 

Используя этот код, так как служба работает периодически снова создает диалоги снова и снова, создавая стек диалоговые окна.

Я хочу, чтобы закрыть или отклонить эти уже созданные диалоги перед созданием новых, из службы фона, но не в состоянии.

+0

Попробуйте закрыть несколько экземпляров одновременно, используя метод отклонения активности с диалогом «Тема». –

+0

Вы пытались называть 'finish()' перед созданием нового намерения? –

+0

@MyGod Пробовал, не нашел способ сделать это. –

ответ

1

В DialogActivity реализация BroadcastReceiver согласно этой ссылке:

How to close the activity from the service?

Так что в вашем случае до зацикливания вы должны вызвать

sendBroadcast (новый Intent ("А"));

, который должен закрыть все действия, созданные в предыдущем цикле.

+0

Пытался следовать, как вы предполагали, но таким образом количество открытых диалогов меньше ожидаемое число, предположим, что число ожидаемых диалогов составляет 5, но теперь они несовместимы, т. е. иногда 3, иногда 2 ... –

+0

Вы должны позвонить sendBroadcast (новый Intent («xyz»)); только один раз, поэтому неважно, сколько диалогов открыто. Все они внедряют BroadcastReceiver, которые должны быть закрыты после того, как вы передали намерение определенным id (xyz) – mommcilo

Смежные вопросы