文章目录
前言
Service顾名思义就是服务,如网易云音乐客户端播放歌曲,当你把打开其他应用,或者回到桌面,把应用放在后台时,歌曲还会一直播放,除非主动去关闭或者杀死应用进程。
曾经能否在后台自动运行一直是区分智能机和老人机的标准,用过老人机的同学回想一下,我们能不能在听歌的时候直接返回到桌面,歌曲还能播放,显然不能
提示:以下是本篇文章正文内容,下面案例可供参考
一、Service是什么?
1.继承了ContextWrapper
public abstract class Service extends ContextWrapper implements ComponentCallbacks2,
ContentCaptureManager.ContentCaptureClient
2.ContextWrapper继承自Context
public class ContextWrapper extends Context
3.总结:Service可以理解为没有界面的活动
4.自定义一个service类
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class MyFirstService extends Service {
/*
打Log时的TAG
*/
private final static String TAG = "TAG";
/*
构造方法
*/
public MyFirstService() {
}
/*
自定义一个InnerBinder继承自Binder,有callServiceMethod()调用了sayBye方法
*/
public class InnerBinder extends Binder {
public void callServiceMethod() {
sayBye();
}
}
/*
调用bindService时使用
*/
@Override
public IBinder onBind(Intent intent) {
return new InnerBinder();
}
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG, "onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Log.i(TAG, "onDestroy");
super.onDestroy();
}
@Override
public boolean onUnbind(Intent intent) {
Log.i(TAG, "onUnbind");
return super.onUnbind(intent);
}
@Override
public void onRebind(Intent intent) {
Log.i(TAG, "onRebind");
super.onRebind(intent);
}
private void sayBye() {
Toast.makeText(this, "Bye bye !!!", Toast.LENGTH_SHORT).show();
}
}
二. 启动,停止和方法调用
2.1 使用StartService启动服务,和使用StopService去停止服务
2.11 用两个控件来控制服务的启动和停止
xml代码如下:
<TextView
style=