我對Android很新,目前正在開發一個簡單的XMPP客戶端。用戶應該能夠登錄,並且在XMPP消息到達時應該被通知。應該可以訪問當前會話期間到達的所有消息的概述。如何在重新啓動Android應用程序時定義啓動的活動?
當啓動應用程序時,啓動LoginActivity,提示用戶填寫他或她的憑證。如果提供正確的憑證,後臺服務啓動:
Intent intent = new Intent(this, NotificationService.class);
startService(intent);
在啓動時,通知服務增加了一個數據包偵聽到XMPP連接,並請求將在前臺運行。用戶會收到由此前臺請求導致的通知(「正在進行」)。現在我已經提供了第二項活動,名爲XMPPClientActivity,顯示會話期間接收到的所有消息以及一個簡單的註銷按鈕。當打開從「正在進行的」通知中的應用,XMPPClientActivity開始,因爲該通知的定義是這樣的:
xmppIntent = new Intent(this, XMPPClientActivity.class);
pendingIntent = PendingIntent.getActivity(this, 0, xmppIntent, 0);
NotificationCompat.Builder xmppBuilder = new NotificationCompat.Builder(this);
xmppBuilder.setContentIntent(pendingIntent);
// Notification details
startForeground(id, xmppBuilder.build());
然而當從主屏幕打開應用程序時,LoginActivity再次打開。當然,我想要開始XMPPActivity,但我似乎無法弄清楚這應該如何完成。我一直在考慮將活動綁定到服務,但我不確定這是否可以提供任何幫助。什麼是正確的方法來做到這一點?
你希望他們永遠只能創建,打開和編輯的一個很好的例子,需要登錄一次,除非他們點擊「註銷」按鈕? – codeMagic
您可以隨時將應用啓動至着陸頁活動。在你的onCreate中,檢查你是否已經登錄(可能是一些內存中的值),如果沒有,則startActivity登錄活動(並完成登錄頁面Activity)。登錄後,設置內存中的值和startActivity登錄頁面的活動。 – dkneller