2015-12-21 127 views
0

如何在活動開啓時啓動服務,我正在使用意向但服務根本沒有啓動。音樂打算在某個頁面打開時播放,但沒有服務運行。在活動開啓時啓動服務

這是我用來在MainPage類上啓動服務的代碼。

public class BackgroundMusic extends Service implements Application.ActivityLifecycleCallbacks, Runnable { 

MediaPlayer player; 

private static final Handler uiHandler = new Handler(Looper.getMainLooper()); 

@Override 
public void onCreate() { 
    super.onCreate(); 
    player = MediaPlayer.create(this, R.raw.backgroundmusic); 
    player.setLooping(true); 
    player.setVolume(100, 100); 
    player.start(); 
    Intent BackgrndMusic = new Intent(this, MainPage.class); 
    startService(BackgrndMusic); 
    getApplication().registerActivityLifecycleCallbacks(this); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    // stop listening for activities 
    getApplication().unregisterActivityLifecycleCallbacks(this); 
} 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onActivityStarted(Activity activity) { 
    // do not destroy this service 
    uiHandler.removeCallbacks(this); 
} 

@Override 
public void onActivityStopped(Activity activity) { 
    // if an activity don't show up in 1 second, destroy this service 
    uiHandler.postDelayed(this, 1000); 
} 

@Override 
public void run() { 
    // no more activity, destroy this service 
    stopSelf(); 
} 

@Override 
public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class); 
    startService(BackgrndMusic); 
} 

@Override 
public void onActivityResumed(Activity activity) { 
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class); 
    startService(BackgrndMusic); 
} 

@Override 
public void onActivityPaused(Activity activity) { 
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class); 
    stopService(BackgrndMusic); 
} 

@Override 
public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 

} 

@Override 
public void onActivityDestroyed(Activity activity) { 
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class); 
    stopService(BackgrndMusic); 
} 

}

+0

你能後的代碼的MainPage? – g90

+0

主頁面只是一個活動頁面,我想要播放我的音樂。我在BackgroundMusic服務類中設置了音樂。 – Raj

+0

對不起,我的意思是你可以發佈背景音樂代碼 – g90

回答

1

使用

@Override 
protected void onResume() 
{ 
super.onResume(); 
startService(foo); 
} 

@Override 
protected void onDestroy() 
{ 
super.onDestroy(); 
StopService(foo); 
} 
+0

如果我只希望在打開一項活動時播放它,該怎麼辦? – Raj

+0

我認爲你需要詳細說明你正在嘗試在你的應用程序中做什麼。 – CodeCody

+0

所以當打開MainPage時音樂應該播放,並且應該在幾頁上繼續而不會中斷。使用服務以這種格式記錄下來,我編輯它以顯示整個BackgroundMusic類代碼。 – Raj