活动销毁后服务停止了吗?

时间:2019-03-21 00:10:24

标签: java android service process

我试图通过放置一个按钮来启动音频文件的onClick()->启动服务,该服务依次播放声音,该服务可以播放音频文件。 但是当我破坏活动时,歌曲停止了(我无法告诉Service状态)[我在Service类的onDestroy方法中敬酒了,但没有成功。]

任何人都可以帮助吗?!

AndroidManifest

  <service android:name=".ExampleService"
        android:enabled="true"
        android:exported="true"
        ></service>

ExampleService.java

public class ExampleService extends Service {
MediaPlayer mpService;
private final static String TAG="ExampleService";

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    mpService.start();

    return START_STICKY;
}
@Override
public void onCreate() {
    super.onCreate();
    mpService=MediaPlayer.create(this,R.raw.lwyashko);
    Toast.makeText(this,"*** STARTED *** ",Toast.LENGTH_SHORT).show();
}
@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
}
@Override
public void onDestroy() {

    Log.d(TAG,"onDestroy was Called ");
    Toast.makeText(this,"Service Destroyed",Toast.LENGTH_SHORT).show();
}

@Nullable
@Override

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

}

MainActivity.java

   playService.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        i=new Intent(getApplication(),ExampleService.class);
        startService(i);
        }
    });

2 个答案:

答案 0 :(得分:0)

从API 26开始,通常将仅在不激活活动的情况下运行前台服务。您可以通过在服务内调用startForeground()来使服务成为前台。您将需要在呼叫中创建并提供通知。 Here's the relevant documentation page.

答案 1 :(得分:0)

通常,由startService启动服务后,活动关闭后,服务不会被破坏。但是,如果用户手动清理任务,则整个APP过程将关闭,服务将停止。