0

Вопрос. Как я должен вызвать обработчик из другого класса.Обновление пользовательского интерфейса через обработчик на GCM onMessageReceived

От MainActivity я называю "myHandler.post (myRunnable);", но я не имею ни малейшего представления о том, как назвать ...

спасибо за наш ответ!

Главные:

package gcm.play.android.samples.com.gcmquickstart; 

import ... 

public class MainActivity extends AppCompatActivity { 

public static final Handler myHandler = new Handler(); 

final Runnable myRunnable = new Runnable() { 
    public void run() { 
     mMeldungTextView = (TextView) findViewById(R.id.MeldungTextView); 
     mMeldungTextView.setText("click!"); 
     mp.start(); 
    } 
}; 

OnReceive:

public class MyGcmListenerService extends GcmListenerService { 

private static final String TAG = "MyGcmListenerService"; 
//public TextView mMeldungTextView; 


// [START receive_message] 
@Override 
public void onMessageReceived(String from, Bundle data) { 
    String message = data.getString("message"); 
    Log.d(TAG, "From: " + from); 
    Log.d(TAG, "Message: " + message); 

    if (from.startsWith("/topics/")) { 
     // message received from some topic. 
    } else { 
     // normal downstream message. 
    } 

    MainActivity.msg = message; 

    sendNotification(message); 
    // I want to call handler in MainActivity at this point... 
---> myHandler.post(myRunnable); 

ответ

1

Отправить намерение вашей деятельности от onMessageReceived (String, из, Bundle данных) с дополнительной строкой, которая будет сообщением.

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

+0

Здравствуйте, это правильный путь? Я хочу только отправить сообщение внутри приложения. Есть ли способ вызвать обработчик в основном действии? –

+0

Это правильный путь по моим знаниям. Вы не должны получать доступ к действию непосредственно из службы. Infact более подходящий способ сделать это - иметь базовый контроллер одноэлементного класса, который имеет обработчик и класс обработчика, а затем предпринимает дальнейшие действия на основе ваших данных сообщения gcm. – binaryKarmic

+0

Вы можете использовать BroadcastReceiver и LocalBroadcastManager для отправки намерений в вашу аудиторию. См. Пример трансляции в этом примере GCM https://github.com/googlesamples/google-services/blob/master/android/gcm/app/src/main/java/gcm/play/android/samples/com/gcmquickstart /RegistrationIntentService.java#L76 –

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

  • Нет связанных вопросов^_^