Android 如何通过GCM侦听器服务刷新活动
我在刷新活动时遇到了一个小问题。我已将GCM侦听器服务添加到我的应用程序中。它的侦听器服务应该使我的活动在从GCM服务获得“消息”时刷新。我不想建立一个通知。此外,我不想使用Timer()定期刷新活动 有以下代码: MyGcmListenerService.javaAndroid 如何通过GCM侦听器服务刷新活动,android,google-cloud-messaging,Android,Google Cloud Messaging,我在刷新活动时遇到了一个小问题。我已将GCM侦听器服务添加到我的应用程序中。它的侦听器服务应该使我的活动在从GCM服务获得“消息”时刷新。我不想建立一个通知。此外,我不想使用Timer()定期刷新活动 有以下代码: MyGcmListenerService.java public void onMessageReceived(String from, Bundle data) { String message = data.getString("message"); String
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
String theme = data.getString("theme");
sendNotification(message,theme);
}
private void sendNotification(String message, String theme) {
Messages mess = new Messages();
mess.message=message;
//what I have to do here to make my FirstLayout.java refresh?
}
FirstLayout.java
package com.notif.rasulbek.notifyme;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;
public class FirstLayout extends AppCompatActivity {
TextView mes;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mes = (TextView)findViewById(R.id.firstMes);
我想替换以下行:
Timer autoUpdate = new Timer();
autoUpdate.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
mes.setText(Messages.message);
}
});
}
}, 0, 2000);
}//this approach doesn't like me :(
}
同样,我想从MyGcmListenerService.java发送一个类似信号的东西,它刷新我的活动。请任何人帮我解决这个问题。事先谢谢。最简单的方法之一是使用发送广播,然后在活动中使用收听广播。一旦听者“听到”广播,它就可以触发对活动的必要更新
您可以看到在向GCM注册活动时更新该活动的示例应用程序。有两种实现方法。其中一个与@Arthur提到的非常相似,我正在使用一组不同的API进一步扩展这个概念
- 在GCMINENTService调用的
方法中,该方法具有在收到GCM通知时广播消息的代码onReceive
- 在
onCreate中,注册一个接收者以寻址此广播消息main活动的
- 最后,BroadcastReceive的onReceive将使用
调用更新ImHandleMessageReceiver
protected void onResume()
{
super.onResume();
update = true;;
}
protected void onPause()
{
super.onPause();
update = false;
}
确保
更新
布尔值是静态/全局的。嗨,阿尼夫,非常感谢你的回答。但不幸的是,它不起作用。更具体地说,mes.setText()
无法获取Message.Message
变量,当它被MyGcmListenerService