2013-03-19 3 views
0

Я немного смущен. AccessibilityService может получать все новые уведомления и отправлять информацию с помощью BroadcastReceiver. My AccessibilityService делает этоГде назвать unregisterReceiver в AccessibilityService

public void onServiceConnected() { 
    // ... 
    Communication c = new Communication(); 
    IntentFilter filter = new IntentFilter(); 

    filter.addAction("com.cilenco.lockscreen.notification.send"); 
    registerReceiver(c, filter); 
} 

Intent intent=new Intent("com.cilenco.lockscreen.notification.send"); 

intent.putExtra("string1", string1); 
intent.putExtra("string2", string2); 

sendBroadcast(intent); 

После того, как я отправил трансляцию, AccessibilityService все еще жив. Если уведомление о новом обнаружении onServiceConnected вызывается снова, но тогда Ресивер снова подключен я никогда не называл

unregisterReceiver(c); 

Где я должен назвать это?

ответ

1

Вы звоните unregisterReceiver(), когда вы больше не хотите получать трансляции. Конвенция гласит, что она вызывается в вашем onPause(). Или соннер, если тебе больше не нужно.

+0

Могу ли я называть 'registerReceiver (c, filter); sendBroadcast (намерение); unregisterReceiver (c); 'непосредственно один за другим? Тогда я бы не назвал 'registerReceiver (c, filter);' в onServiceConnected. Все хорошо? – Cilenco

+0

Где вы могли бы назвать регестера, отправить и отменить регистрацию? Как в вашем onCreate, или где? – TronicZomB

+0

У меня нет реальной деятельности или что-то с onCreate. У меня есть этот AccessibilityService, отправьте его в BroadcastReceiver, и там я запускаю новую услугу, но первым шагом является то, что AccessibilityService должен обнаружить новое уведомление. – Cilenco

0

Вы должны называть unregisterReceiver(), когда вам больше не нужно прослушивать намерения или когда вызывается функция onDestroy(), в зависимости от того, что наступит раньше.

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