服务--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方法里面,它的启动服务是有序的。然后在配置下设置就可以了


                            

由于给定引用内容中未提及`--register-service`的相关信息,下面从常见的 IT 场景对其含义和使用方法进行分析。 ### 含义 在 IT 领域,`--register-service` 通常是一个命令行参数,用于指示程序将某个服务注册到服务注册中心。服务注册中心是一种用于管理和跟踪服务实例的组件,它允许服务提供者将自己的服务信息(如 IP 地址、端口号等)注册到中心,而服务消费者可以从中心获取这些信息来调用服务。例如在 Eureka、Consul 等服务注册与发现系统中就会涉及服务注册操作 [^1]。 ### 使用方法 不同的工具和框架使用 `--register-service` 的方式会有所不同。以下是一些可能的示例: #### 假设是自定义脚本 ```bash #!/bin/bash # 模拟一个服务注册脚本 if [ "$1" == "--register-service" ]; then # 执行服务注册逻辑,这里只是示例,实际要根据具体情况实现 echo "Registering service with service registry..." # 这里可以添加调用 API 或执行其他操作来完成注册 else echo "Invalid option. Use --register-service to register the service." fi ``` 使用时可以这样调用: ```bash ./register_script.sh --register-service ``` #### 假设是某个应用程序 ```python import argparse parser = argparse.ArgumentParser(description='Service registration application') parser.add_argument('--register-service', action='store_true', help='Register the service to the registry') args = parser.parse_args() if args.register_service: print('Registering the service...') # 这里添加实际的服务注册代码 else: print('No service registration requested.') ``` 使用时可以这样调用: ```bash python app.py --register-service ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值