簡體   English   中英

Android:我如何抓住主頁按鈕按下

[英]Android: How i can catch home button press

我正在開發一個音樂應用程序。 我有一個Activity ,其中有一個包含曲目的列表。 我可以 select 一個曲目,然后我移動到另一個活動以播放所選曲目。 我還有一個Service class ,當我按下主頁按鈕時,我希望它啟動服務(在后台播放音樂)並移動到主屏幕。

另外,我有方法OnBackPressed()以便移動到上一個Activity

怎么樣,我可以攔截home鍵按下嗎? 謝謝,你的回答。

您可能不想抓住主頁按鈕按下,而是更充實 android 生命周期並使用onPause()代替。 如果您覆蓋活動的onPause()方法來啟動服務,那么無論何時用戶暫時離開活動,即“回家”,這應該會為您提供所需的內容,而無需捕捉所有按鈕按下。

如果您希望服務在用戶離開活動時啟動,例如,轉到另一個應用程序,那么生命周期就是您的朋友。 您可能需要考慮當用戶收到 email 通知並以這種方式離開您的應用程序時會發生什么。 您是否也希望該服務也啟動? 用戶沒有點擊主頁按鈕,因此您的服務不會啟動,但他們確實離開了您的應用程序。 您希望服務在那種情況下啟動嗎?

聽起來您希望服務在用戶離開該活動時啟動,所以如果是這種情況,請查看覆蓋onPause()

更多關於 android 生命周期的信息在這里:

http://developer.android.com/reference/android/app/Activity.html

您只需要添加此方法:

@Override
protected void onPause(){
    <start your service here>
}

編輯:試試這個作為無法攔截主頁按鈕的解決方法,設置一個back_flag

public class Your_Activity extends Activity {
    private boolean back_flag = false;

    .
    .
    .

    public void onBackPressed(){
        back_flag = true;
        <whatever else you have in onBackPressed()>
    }

    @Override
    protected void onPause(){
        if(!back_flag){
            <start your service>
        }
        back_flag = false;
        super.onPause();
    }
}

再說一次,如果不是注冊家庭,這是我目前能想到的唯一解決方法。

Android 旨在不允許您的應用程序像返回按鈕一樣中斷主頁按鈕。 這是一個“按設計工作”的功能。 可以使用 onKeyDown 捕獲后退按鈕,但 home 不能。

您唯一能做的就是監聽 HOME 意圖。 在您的清單中添加這樣的塊:

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.HOME" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

現在事情是這樣的......當用戶在安裝您的應用程序后點擊主頁按鈕時,Android 將彈出“你想做什么”,他們可以將默認設置為他們的默認主屏幕或您的應用程序。 在他們選擇一個默認值后,他們再也看不到那個選擇器了。

如您所見,除了主屏幕替換應用程序外,它對其他任何東西都沒有用。

確保您完全測試任何其他解決方法,例如 OnPause 建議。 例如,如果屏幕超時,您的應用會按預期運行嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM