Вопрос. Как я должен вызвать обработчик из другого класса.Обновление пользовательского интерфейса через обработчик на 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);
Здравствуйте, это правильный путь? Я хочу только отправить сообщение внутри приложения. Есть ли способ вызвать обработчик в основном действии? –
Это правильный путь по моим знаниям. Вы не должны получать доступ к действию непосредственно из службы. Infact более подходящий способ сделать это - иметь базовый контроллер одноэлементного класса, который имеет обработчик и класс обработчика, а затем предпринимает дальнейшие действия на основе ваших данных сообщения gcm. – binaryKarmic
Вы можете использовать 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 –