public class LifeCycleService extends Service {
/**开发Service两大步骤
* step1:定义一个继承Service的子类 如:class LifeCycleService extends Service
* step 2:在AndroidManifest.xml文件中配置该Service
* 启动Service的两种形式:
* 第一种在Activity中通过Context的startService()方法,访问者和Service之间没有联系,即使访问者退出了,Service仍然进行
* 第二种在Activity中通过Cointext的bindService()方法,访问者一旦退出,Service将终止;
*/
public LifeCycleService() {
}
@Override
public void onCreate() {
super.onCreate();
Log.d("jereh","服务被创建");
}
/**Service被启动时,回调该方法。
* 后台任务,比较耗时,复杂的任务。
* @param intent
* @param flags
* @param startId
* @return
*/
private int count=1;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//thread 区别,service不是线程,而是进程,进程和UI进程是共享
//进程是运行的程序,一个进程就可以包括多个线程,一个线程就是一个功能
//任务表示一种独立性功能
//任务完成,进程仍然存在,
// 在服务运行过程中如果停止服务,重新执行
new Thread(new Runnable() {
@Override
public void run() {
// count+=10;
Log.d("jereh","正在提供服务");
// if(count>100){
// stopSelf();//停止服务
// }
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
stopSelf();
}
}).start();
//TODO:返回值
//Service.START_STICKY:描述了标准的重启行为
//如果返回该值,那么当Service被系统杀死后重新启动时将调用onStartCommand方法
//需要注意此时参数为null;
//START_NOT_STICKY
return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
/**
* 当Service绑定的所有客户端都断开连接时,将会回调该方法。
* @param intent
* @return
*/
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("jereh","销毁");
}
}
Service生命周期
最新推荐文章于 2022-06-05 12:07:32 发布