什么时候需要Service呢?比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。
IBinder onBind(Intent intent); | 该方法返回一个IBinder对象,应用程序通过改对象与Service组件通信 |
---|---|
void onCreate(); | 第一次创建时回调 |
void onDestroy(); | 关闭之前调用 |
void onStartCommand(); | 用户调用 startService(intent) 是调用该方法 |
boolean onUnbind(); | 断开链接是调用 |
首先建立一个FirstService类 继承 Service
public class FirstService extends Service {
public FirstService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
return null;
}
//Service 被启动时回调该方法
@Override
public void onCreate() {
super.onCreate();
Log.v("sevtext","Service is Created");
}
// Service 被启动时回调该方法
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("sevtext", "Service is started");
return START_STICKY;
}
//Service 关闭之前回调该方法
@Override
public void onDestroy() {
super.onDestroy();
Log.d("sevtext", "Service is Destroyed");
}
}
现在在主活动中调用该方法,以测试个方法调用的次序
脚下留下: service调用前需要在.mainfest 中声明
public class MainActivity extends AppCompatActivity {
Button start, stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
//创建启动Service 的Intent
final Intent intent = new Intent(this, FirstService.class);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//开始指定service
startService(intent);
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//停止指定service
stopService(intent);
}
});
}
}
布局代码就一个线性布局加两个Button (属性为id + text + 大小)这里就不唠叨了
有什么问题请给我留言,如果上面介绍对你有用不妨点个赞呦~