我正在学习Android服务,因为我听说这是android推荐执行后台任务。绑定服务和线程之间的区别
我想与该服务进行交互,所以这就是我选择绑定服务的原因(顺便说一句,我不想无限期地运行该服务)。
的问题是:我为什么要复杂化使用的IBinder接口,并通过该回调see official docs
@Override public void onServiceConnected(ComponentName className, IBinder service){}
叫我的方法时,我可以简单地创建我的自定义服务自己?例如,如果我想在一个活动中播放背景音乐,我可以创建这个定制(简单)服务:
public class MyOwnService {
MediaPlayer mp;
MainActivity ma;
public MyOwnService(MainActivity mainActivity) {
mp = MediaPlayer.create(mainActivity, R.raw.badinerie);
ma = mainActivity;
}
public void play(){
new Thread(new Runnable() {
@Override
public void run() {
mp = MediaPlayer.create(ma, R.raw.badinerie);
mp.start();
}
}).start();
}
public void pause(){
mp.pause();
}
public void stop(){
mp.stop();
mp.release();
}
}
,并打电话给我服务的最简单的方法是这样
public class MainActivity extends AppCompatActivity {
MyOwnService myOwnService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myOwnService = new MyOwnService(this);
}
public void play(View view) {
myOwnService.play();
}
public void pause(View view) {
myOwnService.pause();
}
public void stop(View view) {
myOwnService.stop();
}
}
您的服务不是服务。它只是一个名为“服务”的名字 –
是的,但是做同样的事情 –
它没有。尽管从您的角度看它可能看起来像这样,因为您不需要其他服务特定的功能 –