2012-12-19 139 views
2

我正在使用Android MediaPlayer類播放正在運行的服務類的MP3文件。如果用戶停止觀看五種活動中的任何一種,我想阻止音樂播放器播放。媒體播放器不會停止播放音頻文件後意圖停止播放

我試着用這裏的代碼發送廣播意圖到保存MediaPlayer的服務。這樣當服務內部的廣播接收機收到這個意圖時,它將調用player.pause()方法來停止播放音樂。

但它不工作。我在查看其中一項活動時啓動了該播放器,然後我離開了應用程序並查看了其他一些應用程序,如Android日曆應用程序。音樂不停止並繼續播放。

有關如何解決此問題的任何想法?

public class Monitor extends Application { 

    @Override 
    public void onCreate(){ 
    super.onCreate(); 

    if(activityVisible==false){ 
     Intent intent = new Intent(); 
     intent.setAction("com.sample.test"); 
     sendBroadcast(intent); 
    } 

    } 


public static boolean isActivityVisible() { 
     return activityVisible; 
     } 

     public static void activityResumed() { 
     activityVisible = true; 
     } 

     public static void activityPaused() { 
     activityVisible = false; 

     } 

     private static boolean activityVisible; 

    } 

這就是我在其他5個活動中所做的每一項活動;

@Override 
    protected void onResume() { 
    super.onResume(); 
    Monitior.activityResumed(); 
    } 

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

回答

1

ApplicationonCreate創建每個活動的時不叫。這是你的意圖嗎?

因此,您的顯示器將更改activityVisible爲false,但是從您發佈的代碼中沒有任何操作此boolean

一個解決方案是創建一個MonitorActivity並讓所有的活動擴展它。然後在的onCreate中,您將發送廣播以啓動服務,並在停止服務。是的,這將在活動之間暫停,以便您可以在服務實際停止時擁有3秒的保險絲。

+0

聽起來不錯,使用擴展活動的MonitorActivity和所有其他活動擴展了Monitor活動。那麼在這種情況下是否使用擴展應用程序無用的活動? – Kevik

+0

@Kevik是的我看不到它的用處,Application類在活動生命週期之外。它對全局引用很有用,但對於生命週期管理並不真實 – Blundell