2017-11-24 6 views
0

그건 내 MainActivity입니다. package com.example.simeon.cookingbook.activities;원할 때 서비스를 중지하고 시작할 수 없습니다

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.KeyEvent; 

import com.example.simeon.cookingbook.R; 
import com.example.simeon.cookingbook.services.BackgroundMusic; 

public class MainActivity extends AppCompatActivity { 
    Intent srv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     this.srv = new Intent(this, BackgroundMusic.class); 
     startService(srv); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     stopService(srv); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     stopService(srv); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     stopService(srv); 
    } 

    @Override 
    protected void onRestart() { 
     super.onRestart(); 
     startService(srv); 
    } 

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

That 's BackgroundMusic 서비스.

package com.example.simeon.cookingbook.services; 

import android.app.Service; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.IBinder; 

import com.example.simeon.cookingbook.R; 

public class BackgroundMusic extends Service { 
    private static final String TAG = null; 
    public MediaPlayer player; 

    public IBinder onBind(Intent arg0) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     player = MediaPlayer.create(this, R.raw.background); 
     player.setLooping(true); // Set looping 
     player.setVolume(100,100); 
    } 

    public int onStartCommand(Intent intent, int flags, int startId) { 
     player.start(); 
     return START_STICKY; 
    } 
} 

나는 다른 활동을하고 난 내 응용 프로그램을 열 때 음악을들을 수 싶어하지만 배경에 갈 때, 나는 연주를 계속 음악을하고 싶지 않아요. BaseActivityClass로 시도해 보았지만 많이 읽었지만 솔루션은 아직 없습니다. 도와주세요, 미리 감사드립니다.

답변

0

MediaPlayer 사용을 마쳤 으면 release() 방법으로 해제해야합니다. 내 생각에 onDestroy() 서비스 방법은 좋은 장소입니다.

public class BackgroundMusic extends Service { 
    private static final String TAG = null; 
    public MediaPlayer player; 

    public IBinder onBind(Intent arg0) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     player = MediaPlayer.create(this, R.raw.background); 
     player.setLooping(true); // Set looping 
     player.setVolume(100,100); 
    } 

    public int onStartCommand(Intent intent, int flags, int startId) { 
     player.start(); 
     return START_STICKY; 
    } 

    public int onDestroy() { 
     player.release(); 
    } 


} 
+0

내 응용 프로그램이 백그라운드로 이동할 때 어떻게해야합니까? 서비스는 직접 중지 할 때만 파괴되지만 홈 버튼으로 음악이 계속됩니다. –

+0

잘 들어, 활동의 onPause 메서드는 포커스를 잃을 때마다 호출됩니다. 따라서 홈 버튼을 클릭하면 현재 활동에서 onPause가 호출되므로, 거기에서 stopService를 호출 할 수 있습니다. –

+0

나는 이것을 시도했지만 다른 활동으로 갈 때 음악이 멈춘다. 그래서 모든 액티비티가 확장하는 기본 액티비티를 만들려고했는데, onPause 메서드를 사용하면 stopService를 추가했지만 기본 액티비티에서는 인 텐트가 변경 될 때마다 onPause 메서드가 활성화되므로 이것이 작동하지 않습니다. . –