2015-01-23 7 views
0

Мне нужно отобразить диалог каждые 5 минут в Activity1. Поэтому отправляйте трансляцию каждые 5 минут из Thread T и зарегистрируйте приемник в Activity1. Поэтому каждые 5 минут Activity1 получают трансляцию и показывают диалог. Все нормально. Но если я перейду в Activity2 из Activity 1 и через 5 минут, если я вернусь к Activity 1, диалог не будет отображаться. Поскольку трансляция зарегистрирована на Activity1, а не на Activity2. Когда Thread T отправляет трансляцию, Activity2 не получит этого, потому что он не регистрируется с этим. Это то, что для решения этой проблемы существуют любые другие возможные решения.Получить трансляцию, когда активность в фоновом режиме

ответ

0

Если вы хотите, чтобы отобразить диалоговое окно, когда Activity1 является текущей деятельностью, регистр/разрегистрировать приемник в onCreate() и onStop() соответственно:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    yourReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //Your implementation 
     } 
    ... 
    registerReceiver(yourReceiver, new IntentFilter(YOUR_ACTION_STRING); 
} 
@Override 
public void onStop() { 
    ... 
    unregisterReceiver(yourReceiver); 
    ... 
} 

Если вы хотите, чтобы ваш приемник, чтобы всегда быть готовым к сигналу, объявить его в AndroidManifest, и создать пользовательский класс для него:

<receiver android:name="your.package.name.YOUR_RECEIVER_CLASSNAME" > 
    <intent-filter> 
     <action android:name="your.action.string" /> 
    </intent-filter> 
</receiver> 
1

Вероятно, вам не нужно использовать какую-либо отделенную нить для толкания диалога через каждые 5 минут. В Android у вас есть несколько механизмов для планирования задач. Возможно, это поможет: Scheduling recurring task in Android