2012-09-03 7 views

ответ

6

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

Чтобы избежать излишнего самого BroadcastReceivers (так как они intented, которые будут использоваться в связи между процессами и могут быть излишними и утечки безопасности) - я reccoment использования LocalBroadcastManager - http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html. Это помощник для строго местных передач, упрощает их обработку и обеспечивает большую производительность и безопасность.

Update:

Чтобы использовать LocalBroadcastReceiver внутри GCM IntentService вы должны сделать что-то вроде этого:

@Override 
protected void onMessage(Context context, Intent intent) { 
    Intent bIntent = new Intent("custom-event-name"); 
    // You can also include some extra data. 
    bIntent .putExtra("message", intent); //or get some info from Gcm intent and put it into this one. 
    LocalBroadcastManager.getInstance(context).sendBroadcast(bIntent); 
} 

И здесь вы можете проверить, как зарегистрировать приемник внутри вашей активности, это довольно легко: how to use LocalBroadcastManager?

Успехов

+0

благодаря AlexN, я новичок в Android, пожалуйста, примените модификацию кода и покажите мне ... извините за мой английский. – Antonio

+0

На самом деле, вам даже не нужно вставлять код - здесь описываются темы: http://stackoverflow.com/questions/8802157/how-to-use-localbroadcastmanager Надеюсь, что это поможет – AlexN

+0

, но я не знаю ho применить код, почему полученный расширяет GCMBaseIntentService .... помогите мне пожалуйста ... – Antonio