2010-08-14 75 views
1

1-如何禁用多任務處理? 我的應用程序是一個基於套接字的遊戲,每當我啓動應用程序,它必須首先加載主頁面以啓動套接字連接? 我不希望用戶能夠在後臺運行我的應用程序。 這可能嗎?Android ==>禁用多任務處理?

2-我不希望用戶能夠使用後退按鈕在頁面之間進行導航,用戶只能使用我的應用程序中可用的按鈕進行導航?這可能嗎?

+5

這只是糟糕的設計。您需要支持硬件按鈕,並且您需要從被推入後臺的過程中優雅地恢復。 AFAIK,這些都是Android的基本設計哲學...... – 2010-08-14 00:53:01

+0

這不是真的。您不希望始終保持插座連接,導致電池死亡。當用戶不活動時,客戶機/服務器應用程序保持連接並不好,這只是浪費帶寬,並會降低服務器的速度 – aryaxt 2010-08-14 01:00:06

+1

1.什麼鬼東西? 2.如果您的應用程序不作爲服務運行。套接字在後臺不會活着。你應該閱讀一下android應用程序的生命週期。只有服務會在後臺繼續工作,所有其他應用程序都處於「睡眠」模式。除非我讀錯了。 3.您可以防止某人在瀏覽器中查看並回到遊戲中,或者接聽電話並返回遊戲。 4.如果套接字處於活動狀態,您應該嘗試處理重新連接/測試。如果您將其作爲服務運行,請添加「空閒超時」並根據請求重新連接。 – 2010-08-14 13:54:20

回答

3

您可以捕獲後退按鈕(並忽略它),但不能阻止Home按鈕。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{  
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     return true; 
    } 
    ... 

記住,手機只是另一種應用程序,以便該OS設計防止惡意應用程序從禁用設備的「電話」的方面。

如果你想阻止應用程序在後臺運行,您可以在onPause內關閉活動()方法:

@Override 
protected void onPause() 
{ 
    super.onPause(); 
    finish(); 
} 

這將迫使你的應用程序從頭開始,如果它放在出於任何原因進入背景。這可能會在手機進入睡眠狀態時被調用,但是,它可能不是您正在尋找的確切行爲。

+0

非常感謝,很好的答案。 1問題:我在哪裏寫你提供的第二個代碼?在每一個活動? – aryaxt 2010-08-14 01:03:21

+1

onPause()代碼需要進入任何不希望允許在後臺運行的活動。正如Chinmay Kanchi所說的那樣,你反對Android的理念,所以用這種方式設計你的應用將會非常困難。下面是更詳細的解釋什麼時候生命週期函數被調用時:http://developer.android.com/guide/topics/fundamentals.html#actlife – 2010-08-14 01:11:10

+0

1更多的東西:),我有一個服務(套接字)運行在背景。調用finish()是否也會終止服務? – aryaxt 2010-08-14 01:56:30