我正在編寫一個包含GCM的應用程序。我不想與Whatsapp競爭。它應該只是所有使用此應用程序的人之間的一種公告板。Android GCM消息活動 - 在活動開始時重新加載
使用按鈕菜單打開應用程序,其中一個將用戶指向消息活動。
只要你留在這個活動,消息在那裏,一切都按原樣運作。
但是,如果我回到菜單活動,然後再回到消息活動中,則所有消息都消失並且不顯示。
我正在使用ListActivity作爲消息和onCreate函數,每當它被讀取時就銷燬當前列表。
我的問題是,我怎樣才能返回到郵件活動而不會丟失它們?我想在Whatsapp中擁有它,當你進入WhatsApp時,信息總是在那裏!
我想將消息列表保存到文件中,然後在調用onCreate時讀取它(或者說是最後的40-50條消息)。這是一個好的解決方案嗎?有沒有解決方案沒有將列表保存到文件?
這裏是我的一些消息活動內部代碼:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msg_main);
Intent in = getIntent();
username = in.getStringExtra("username");
password = in.getStringExtra("password");
nickname = in.getStringExtra("nickname");
messages = new ArrayList<Message>();
txtNewMsg = (EditText) this.findViewById(R.id.text);
adapter = new MessagesAdapter(this, messages);
setListAdapter(adapter);
registerReceiver(mHandleMessageReceiver, new IntentFilter(DISPLAY_MESSAGE_ACTION));
}
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
// Waking up mobile if it is sleeping
WakeLocker.acquire(getApplicationContext());
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String currentDateandTime = sdf.format(new Date());
Spanned newMessageDate = Html.fromHtml("<small><i><font color=\"red\">" + currentDateandTime + "</font></i></small>" + " " + "<small><i><font color=\"blue\">" + nickname + "</font></i></small>" + "<br />" + newMessage);
addNewMessage(new Message(newMessageDate, true));
WakeLocker.release();
}
};
@Override
protected void onDestroy() {
if (mRegisterTask != null) {
mRegisterTask.cancel(true);
}
try {
unregisterReceiver(mHandleMessageReceiver);
GCMRegistrar.onDestroy(this);
} catch (Exception e) {
Log.e("UnRegister Receiver Error", "> " + e.getMessage());
}
super.onDestroy();
}
void addNewMessage(Message m)
{
messages.add(m);
adapter.notifyDataSetChanged();
getListView().setSelection(messages.size()-1);
}
的代碼包括:的onCreate,廣播接收器(GCM接收機),和的onDestroy其中addNewMessage添加新的消息到消息列表中。
感謝您的幫助!
AJ
感謝您的快速響應!讓我試試這個並回到你身邊。但想想Whatsapp,每次你打開郵件時,它們已經在那裏了。只有加載「早期消息」時,才能從遠程數據庫中取出它們。他們是否將當前的歷史記錄保存在電話的數據庫中?我應該這樣做嗎?無論如何,我會做你的建議,我會盡快回復你! – 2014-10-31 11:27:14
是的設備數據庫也是whatsapp存儲消息,即使他們也將圖像縮略圖存儲在數據庫中,當互聯網連接不可用時,也可以讀取現有消息 – Pratik 2014-10-31 11:29:39
您的解決方案像一個魅力一樣工作!謝謝您的幫助。我實現了一個數據庫的消息。現在,每次進入活動時,都會從SQL數據庫加載舊郵件!謝啦! – 2014-11-01 01:20:54