service服务(启动服务)

如果在主线中写的话会出现
//ANR:application not responsing应用程序未响应
//耗时操作写到主线程

 @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //耗时操作
        for (int i = 0; i <100 ; i++) {
            Log.i("test","i="+i);
            SystemClock.sleep(1000);
        }
        return super.onStartCommand(intent, flags, startId);
    }

//解决方案写个子线程

class  MyThread extends Thread{
        @Override
        public void run() {
            super.run();
            //耗时操作
            for (int i = 0; i <100 ; i++) {
                Log.i("test","i="+i);
                SystemClock.sleep(1000);
            }
        }
    }

//服务和Thread的区别就是:
古代双方领兵打仗有将军和小兵
将军 就是 服务 将军在好多时候都是快死了就是死不了总是莫名其妙的有满血复活了

小兵 就是 Thread 小兵死了就死了 有的时候没有小兵还不行
明明是是服务执行耗时操作 却要Thread执行耗时操作
不要Thread还不行
服务就算死了还能活过来

//关闭服务

//停止服务
//当第一个线程执行完毕,则停止服务
//stopSelf();
//所有的线程都执行完毕后,才会停止服务
  stopSelf(startId);

Service和IntentService的区别

IntentService能在主线程中执行耗时操作
里面有异步任务类

Service服务执行耗时操作要在子线程中执行不能再主线程中执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值