这是第一个问题,但我已经有一段时间了.
我有什么:
我正在构建一个播放音频流和在线播放列表的Android应用.一切都工作正常,但我在与我的服务沟通时遇到问题.
音乐正在服务中播放,以startForeground开头,所以它不会被杀死.
我需要通过我的活动与服务进行沟通,以获取曲目名称,图像和更多内容.
我的问题是什么:
我想我需要使用bindService(而不是我当前的startService)启动我的服务,以便活动可以与它通信.
但是,当我这样做时,我的服务在关闭Activity后被杀死.
我怎样才能得到这两个?绑定和前台服务?
谢谢!
解决方法
不,bindService不会启动服务.它只是通过服务连接绑定到服务,因此您将拥有访问/控制它的服务实例.
根据您的要求,我希望您将使用MediaPlayer的实例.您也可以从Activity启动服务,然后绑定它.如果服务已经运行onStartCommand()将被调用,您可以检查MediaPlayer实例是否为null然后只返回START_STICKY.
改变你这样的活动..
public class MainActivity extends ActionBaractivity { CustomService customService = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // start the service,even if already running no problem. startService(new Intent(this,CustomService.class)); // bind to the service. bindService(new Intent(this,CustomService.class),mConnection,Context.BIND_AUTO_CREATE); } private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName,IBinder iBinder) { customService = ((CustomService.LocalBinder) iBinder).getInstance(); // Now you have the instance of service. } @Override public void onServicedisconnected(ComponentName componentName) { customService = null; } }; @Override protected void onDestroy() { super.onDestroy(); if (customService != null) { // Detach the service connection. unbindService(mConnection); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。