2013-07-31 171 views
2

我對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,但我似乎無法弄清楚這應該如何完成。我一直在考慮將活動綁定到服務,但我不確定這是否可以提供任何幫助。什麼是正確的方法來做到這一點?

+0

你希望他們永遠只能創建,打開和編輯的一個很好的例子,需要登錄一次,除非他們點擊「註銷」按鈕? – codeMagic

+0

您可以隨時將應用啓動至着陸頁活動。在你的onCreate中,檢查你是否已經登錄(可能是一些內存中的值),如果沒有,則startActivity登錄活動(並完成登錄頁面Activity)。登錄後,設置內存中的值和startActivity登錄頁面的活動。 – dkneller

回答

1

你可以做什麼,因爲我理解你的問題,是使用ShaeredPreferences。創建像「loggedin」這樣的首選項,並在第一次登錄時將boolean變量設置爲true。現在,您可以在點擊「登出」Button時將其設置爲false

Activity開始,你可以調用setContentView()前檢查SharedPreference,如果值是true然後finish()LoginActivity並打開其他Activity

鏈接到我提供的文檔具有SharedPreferences

相關問題