2011-05-24 93 views
4

我不確定是否有更好的方法來做到這一點,但我想檢測導致應用程序暫停的原因。Android檢測導致onPause的原因

在一個特定的活動,顯示一個跟蹤地圖,如果用戶點擊返回或家我想停止GPS,但如果屏幕熄滅我想讓GPS保持運行我也使用喚醒鎖,所以它不睡眠(是的,我知道這可能應該是一個服務,但是這將是V2,我的時間不多了!)

當返回按鈕被按下

@Override 
public void onBackPressed() { 

    wl.release(); 
    this.mMyLocationOverlay.disableMyLocation(); 
    this.mMyLocationOverlay.disableCompass(); 

    if (mLocManager != null) { 

     mLocManager.removeUpdates(mLocListener); 
    } 
    super.onBackPressed(); 
} 

但我不能,我重寫找不到爲家庭做同樣的事情。

誰能幫助?

貝克斯

回答

6

onPause()你可以打電話isFinishing()知道,如果活動結束了一切可能僅僅讓暫停的原因或。參見文檔here

+0

Ahhh isFinishing!謝謝! – Bex 2011-05-24 15:00:47

+3

這裏的問題是,如果onPause是由home按鈕引起的,isFinishing()返回false,就好像一個新的活動正在接管,所以我們不能使用這個確定如果該暫停是由主屏幕按鈕按!這讓我瘋狂!有誰知道是否有可靠的方法來判斷homebutton是否被按下? – 2012-01-16 15:05:56

+0

多數民衆贊成在正確的,你不能用這個來知道onPause是否是因爲一個主頁按鈕。可能是你可以註冊一個主頁按鈕廣播 – Varun 2012-01-20 18:17:19

0

但首先請檢查你寫你的邏輯是否涉及到onBackPressed()。寫一些日誌,以確認您的代碼部分是活躍的

如果我正確理解你。您有一項活動可以從該活動中看到您已開始另一項活動。但是,當您點擊返回最近活動的關鍵點時,您希望在之前的活動中執行一些必須執行的操作。如果是這種情況,則必須在onResume()方法中編寫邏輯。因爲只要您點擊返回頂部的關鍵活動完成,並且您的焦點來到以前活動的方法onResume()。無法覆蓋onKEyDown()onBackPressed()

如果您覺得我的回覆對您有用,請勿忘記投票。

感謝 迪帕克

相關問題