服务--service

1.含义:

        服务是Android四大组件之一,与Activity一样,代表可执行程序,service不像Activity有可以操作的用户界面,一直是在后台运行,如果某个组件需要在运行时向用户呈现可操作的信息就应该选择Activity,否则应该选择Service


2.作用:

        2.1:和广播类一起使用,开机启动服务监听系统的所有通讯

         2.2:因为没有操作界面,在后台播放音乐

         2.3:木马程序

         2.4:默默的收集系统信息、在后台发送邮件等等


3.本地服务:

       生命周期(一个本地服务可以被开启动多次,但是只会被创建一次,销毁也只会执行一次):

            开始 :startService(Intent intent)

                结束:a、stopService(Intent intent);  

                           b、stopSelf();  表示不管调用了多少次startService(),都会停止服务

                           c、stopService(int starId); 标记当前的这一次startService()停止,等到所有的startService()都停止的时候。停止服务


4.注意事项:

      如果需要执行耗时操作时,那么就要把耗时操作放在子线程中执行,如果在线程执行的过程中停止服务,那么这个线程并不会跟着停止,主线程的宿主不是Service而是main Thread主线程,所以在启动子线程时,要考虑如何去控制子线程


5.如何创建本地服务:

        写一个类继承Service类,然后在重写几个生命周期方法 

public class MyService extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {   //远程监控
        Log.i("test","onBind");
        return null;
    }


    @Override
    public void onCreate() {   //服务创建时被调用
        super.onCreate();
        Log.i("test","onCreate");
    }


    @Override
    public int onStartCommand(Intent intent,  int flags, int startId) {      //实现业务方法


            new MyThred(startId).start();


        return super.onStartCommand(intent, flags, startId);
    }




    class MyThred extends Thread{
        private int startId;


        public MyThred(int startId) {
            this.startId = startId;
        }


        @Override
        public void run() {
            super.run();


            for (int i = 0; i <10 ; i++) {
                Log.i("test","onStartCommand"+i);
                SystemClock.sleep(1000);
            }
           //停止服务
            //stopSelf();   //第一个线程完毕则会销毁
            stopSelf(startId);   //当所有线程完毕则会销毁
        }
    }

    @Override
    public void onDestroy() {   //销毁方法
        super.onDestroy();
        Log.i("test","onDestroy");
    }

}


如果你不想使用这个方法的话还可以类继承IntendService,只要重写一个方法和一个构造方法就可以了,耗时操作就直接写在onHandleIntent方法里面,它的启动服务是有序的。然后在配置下设置就可以了


                            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值