https://blog.csdn.net/luoyanglizi/article/details/51586437
2、service和Thread的区别
定义上:
thread是程序运行的最小单元,可以用来执行异步操作
service是android的一种机制,他是运行在android的主线程上,
service是运行在主线程,所以它不能执行一些耗时操作,如果是要作耗时操作,就要在service里面创建子线程,再做耗时逻辑
为什么不直接在activity里创建子线程进行耗时操作?
因为activity很难对thread进行控制,而Service,对于activtity就很简单了
启动service的两种方法:
1、
2、
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent startIntent = new Intent(v.getContext(),MyService.class);
startService(startIntent); }
});
用startService()方法来启动服务,活动里面可以用stopService(Intent)来停止服务
服务自身可以用stopSelf()来停止
public class MyService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
} @Override
public void onCreate() {
super.onCreate();
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
} @Override
public void onDestroy() {
super.onDestroy();
}
}
第一次启动服务时 onCreate()和onStartCommand()会调用,之后只有onStartCommand()执行
为了让活动知道服务做了什么,就要借助服务中的onBind()方法
创一个类继承Binder类