2011-04-21 67 views
0

在我的應用程序中,我必須連接到服務器,我在單獨的線程中執行此操作,並且我希望連接保持活動狀態,只要我的應用程序的活動在屏幕上可見。我也希望如果用戶離開我的應用程序,線程會中斷並且連接關閉。只要應用程序在屏幕上,網絡線程必須存在

這裏的主要問題是,如果用戶旋轉屏幕,當前活動就會被破壞,我無法區分這種情況與用戶真正離開我的活動的情況。方法onRetainNonConfigurationInstance()不起作用,因爲它在onStop()之後被調用,並且我想關閉onStop()中的連接。

我也嘗試了綁定服務,但問題是完全一樣的,服務在我旋轉屏幕時關閉。

而我不想自己處理配置更改。

我該怎麼辦?

回答

0

onUserLeaveHint()方法取得了訣竅。

0

我知道它違揹你不想處理配置改變自己有點您的語句,但如果添加

<activity android:name="org.example.Activity" android:configChanges="orientation|keyboardHidden"></activity> 

你的清單,生命週期方法不應該被調用。如果您不覆蓋onConfigurationChanged()方法,則不需要進行特殊處理,並且所有內容都由超類來處理。

+0

是的,問題是,開發指南說這隻能作爲最後的手段,所以我寧願不使用這個解決方案。 – 2011-04-21 13:53:16

+0

@Guillaume我個人認爲這種情況是這樣的:「_在某些特殊情況下,您可能希望繞過基於一種或多種配置更改重新啓動活動。」(來自[活動生命週期文檔]( http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges))但是,如果有另一個更優雅的解決方案,我想聽聽它,因爲我面臨類似的問題幾次,並總是訴諸於使用上述方法。 – Stephan 2011-04-21 14:14:53

+0

我可以看到另一個解決方案,但這可能有點難看。當每個活動停止時,在線程中啓動一個計時器(例如10秒),並且如果在計時器結束時每個活動仍然停止,則中斷該線程。好的副作用是,它允許用戶在幾秒鐘內退出應用程序(例如讀取SMS)而無需斷開連接。 – 2011-04-21 16:00:19

相關問題