-1

Я прочитал здесь, как получить сообщение GCM: http://developer.android.com/google/gcm/client.html - Я говорю о названии: Получайте сообщение вниз. Существует примечание: использование WakefulBroadcastReceiver не является обязательным требованием. Если у вас относительно простое приложение, которое не требует услуги, вы можете перехватить сообщение GCM в обычном BroadcastReceiver и выполнить свою обработку там. Как только вы поймете, что GCM переходит в метод onReceive() вашего вещательного приемника, то, что вы делаете с ним, зависит от вас.Android получил сообщение GCM и поместил его в уведомление

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

На примере приемника вещания заключается в следующем:

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Explicitly specify that GcmIntentService will handle the intent. 
     ComponentName comp = new ComponentName(context.getPackageName(), 
       GcmIntentService.class.getName()); 
     // Start the service, keeping the device awake while it is launching. 
     startWakefulService(context, (intent.setComponent(comp))); 
     setResultCode(Activity.RESULT_OK); 
    } 
} 

Так вот несколько вопросов:

1) бодрствующих радиовещательный приемник является исключительно предотвращает переход устройства в спящий режим или же разбудить его, когда приходит сообщение?

2) Как я могу узнать, нужен ли мне обычный широковещательный приемник или бодрствование?

3) Предполагая, что у меня есть несколько вещательных приемников, как приложение знает, что использовать, когда приходит сообщение?

4) Вместо вызова службы намерения, которая использует намерение широковещательного приемника, если я хочу только извлечь заголовок и поместить его в область уведомлений, я должен просто обработать намерение внутри самого вещательного приемника?

ответ

0

1) Приемник приемной будильника предназначен исключительно для того, чтобы предотвратить отключение устройства от или также разбудить его при поступлении сообщения?

исключительно для предотвращения переустройства устройства.

2) Как я могу узнать, нужен ли мне обычный широковещательный приемник или бодрствование ?

, если вы собираетесь делать слишком много работы, вам нужно использовать intentService, поскольку приемник называются в потоке пользовательского интерфейса, и если вы хотите сохранить ваш CPU жив, делая ваше использование работы бодрствующим. В целом, это не гарантирует, что при вызове службы от вашего широковещательного приемника в этой ситуации ваша доза процессора не спадает снова, поэтому всегда используйте wakeful.

3) Предполагая, что у меня есть несколько широковещательных приемников, как приложение знает , которое будет использоваться при поступлении сообщения?

От намерения фильтра вашего приемника в манифесте:

<intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <category android:name="com.example" /> 
    </intent-filter> 

4) Вместо вызова пристальный услугу, которая использует намерение радиовещательного приемника, если я только хочу, чтобы извлечь название и поместить его в области уведомлений, я должен просто обработать намерение внутри самого приемника вещания ?

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

+0

Спасибо за подробный ответ. Я прочитал этот учебник после прочтения вашего ответа, и теперь я понимаю его намного лучше. – Amos

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