java - 活动被破坏后服务停止?
问题描述
我正在尝试制作一个非常简单的服务来播放音频文件,方法是放置一个按钮,其 onClick() -> 启动服务,该服务依次播放声音。但是当我破坏活动时歌曲停止(我无法告诉服务状态)[我在服务类的 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);
}
});
解决方案
正常情况下,通过startService启动服务后,在activity关闭后服务不会被销毁。但是如果用户手动清理任务,整个APP进程会被关闭,Service也会停止。
推荐阅读
- r - 你能创建一个使用前缀和后缀调用的 R 函数(像括号一样操作)吗?
- glsl - WebGL fragshader ... gl_FragColor 的传入值是多少?
- reactjs - 可以将材质 UI 样式注入 iframe 吗?
- c++ - 是一种比较向量等于C++中另一个向量的一部分的方法吗?
- python - 获取多年来的平均月数
- javascript - Axios 无法发布导航器 getCurrentPosition
- sql - 为什么这个简单的 SQL 查询不起作用?从表中选择 *, count(*)
- html - 如何删除导航栏中图像的边框?
- javascript - 如何映射图像数组并将其用作 React 中的内联样式
- python - 根据值更改条形图颜色