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服务执行耗时操作要在子线程中执行不能再主线程中执行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章