我有一个简单的聊天应用程序,我正在使用GCM接收消息并更新de UI,事情是,当应用程序进入后台时,UI未更新,如何在应用程序时更新UI在背景中?
这是代码:
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
String iDuser = intent.getExtras().getString(EXTRA_IDQUIEN);
String fEcha = intent.getExtras().getString(EXTRA_FECHA);
String audio = intent.getExtras().getString(EXTRA_AUDIO);
String video = intent.getExtras().getString(EXTRA_VIDEO);
String imagen = intent.getExtras().getString(EXTRA_IMAGEN);
Log.e("fecha", " "+fEcha);
if (iDuser.equals(iduser)) {
WakeLocker.acquire(getApplicationContext());
HashMap<String, String> map = new HashMap<String, String>();
map.put("mensaje", newMessage);
map.put("fecMens", fEcha);
map.put("audio", audio);
map.put("imagen", imagen);
map.put("video", video);
map.put("idusuario", iDuser);
arraylist.add(map);
Log.e("añadiendo el mensaje", newMessage);
adapter.notifyDataSetChanged();
WakeLocker.release();
}
}
};
在第一次运行时,我执行asynctask来下载消息时间轴,然后当活动可见时,我使用广播接收器更新UI。
现在我需要在应用程序转到后台时更新该UI,例如whatsapp。
感谢任何帮助
答案 0 :(得分:1)
您是否有理由无法在onResume()
中执行这些UI更新?这将是首选的方法,因为你并不真的希望你的应用程序做大量的UI工作,而不管它是什么。
您的Activity类可以有private boolean needsUiUpdate = false;
。然后,在onReceive()
中,您可以设置needsUiUpdate = true;
。最后,在你的活动onResume()
中,你有类似的东西:
@Override
public void onResume() {
if (needsUiUpdate) {
doUiUpdates();
}
}