2013-01-05 53 views
0

我有一個喜好的活動:啓用/禁用聲音和啓用/禁用聲音背景。閱讀sharepreferences我開始一個服務,啓動mediaplayer。當活動進入onPause()狀態時,我需要暫停mediaplayer。來自活動的onpause mediaplayer

活動:

// reading sharedpreferences, if true: 
    startService(new Intent(this, UnUsedService.class)); 

服務:

private PendingIntent pendingIntent; 
    public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
    player.start(); 

}; 

回答

1

我不知道這些解決方案是否正確。但你絕對可以試試看。

A.BindingUnbinding服務在onPause()onResume()

Acitivity應該unBind到服務在活動的onPause(),但如果你沒有叫unbind(),我想你會得到一個內存泄漏。

Activity應該reBind服務在onResume()活動。但這些綁定解除綁定可能會導致您NullPointerException


Sending BroadCastReceiver可能會建立你這樣的事情。

註冊和註銷廣播自己的需要

裏面你的活動 - 在onPause()

String PAUSE_MUSIC="PAUSE_MUSIC_INSIDE_SERVICE"; 
Intent intent = new Intent(PAUSE_MUSIC_INSIDE_SERVICE); 
sendBroadcast(intent); 

裏面你的服務

BroadCastReceiver receiver=new PauseMusicReceiver(); 
IntentFilter filter = new IntentFilter(Activity.PAUSE_MUSIC); 
getApplicationContext().registerReceiver(receiver, filter); 

class PauseMusicReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
    //Pause your MediaPlayer 
    } 
} 

ÇSleep or Suspend Thread which is created at Service

服務內部的媒體也處理您爲服務創建的線程。因此,可能會暫停或將該線程置於睡眠模式的Activity的onPause(),並在Activity的onResume()再次恢復該線程可以提供幫助。

Thread方法-onSuspend(),在onStart(),的onResume(),onSleep()

相關問題