23.本地服务Services

UEFI启动服务与运行时服务深度解析 UEFI(统一可扩展固件接口)是现代计算机系统启动的核心技术,取代了传统的BIOS。它通过Boot Services和Runtime Services两大模块,为操作系统提供了硬件抽象层和系统管理框架。Boot Services负责系统初始化阶段的内存管理、协议管理和事件处理等功能,而Runtime Services则在操作系统加载后继续提供变量存储、时间管理等基础服务。理解UEFI的服务架构对于系统开发和安全分析至关重要,特别是在内存管理、协议系统和事件处理等关键技术方面。这些技术不仅影响系统启动效率,还 阅读详情
一、服务简介

        执行耗时操作(后台)


二.如何创建本地服务知识概括



三.案例

1.具体实现代码

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="com.zking.android23_services.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="启动服务"
        android:onClick="start"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="停止服务"
        android:onClick="stop"
        />

</LinearLayout>

MainActivity.java

package com.zking.android23_services;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        intent = new Intent(this,MyServices.class);
    }

    //开始服务
    public void start(View view){
        startService(intent);//Ctrl+P告诉你要传一个Intent对象
    }

    //停止服务
    public void stop(View view){
        stopService(intent);
    }

}

服务的生命周期:onCreate  onStartCommand  onDestroy onBind

本地服务:onStartCommand返回值3

服务的停止:stopService  stopSelf(stopSelf() 、stopSelf(id))  

MyServices.java

package com.zking.android23_services;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.util.Log;

/**
 * 面试题:线程和服务区别
 *
 * Service要配置:因为属于4大基本主键
 *
 * 本地服务有一个特点:当你执行完之后,这个服务要自杀onDestroy
 * stopSelf(startId) 无参:只要第一个服务执行完毕就会停止。有参:所以的服务执行完毕才会调用onDestroy方法
 *
 */

public class MyServices extends Service {

    //方法1:这个方法在远程服务中才会用
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    //方法2
    @Override
    public void onCreate() {
        super.onCreate();
        Log.i("test","onCreate");
    }

    //方法3:执行所有耗时的操作
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {//报错:右键Removw移除掉@IntDef
         new MyThread(startId).start();//启动这个线程 把startId传进来
         return Service.START_STICKY;//哪怕应用程序被干掉,服务过一段时间会重启
    }
    //子线程
    class MyThread extends Thread{
        private int startId;//是onStartCommand方法返回的值startId
        //构造方法
        public MyThread(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(500);//为了看效果,睡眠一下
            }
            stopSelf(startId);//把startId传进来  不管你有几个线程,当你全部执行完之后,他才会销毁
        }
    }

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

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zking.android23_services">

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!--配置服务-->
        <service android:name=".MyServices"
            android:enabled="true"
            android:exported="true"
            ><!--enabled、exported属性:可以被其他的应用程序所启动-->
        </service>

    </application>

</manifest>

2.执行效果



四.线程和服务区别

线程执行耗时的操作,服务也执行耗时的操作,服务本身不能执行耗时的操作,还是依赖于线程
可以理解为:服务是老大,线程是小弟,干事情的永远是小弟,指挥小弟干事情的是老大,没有老大是不行的,因为老大是不容易死的,死了还可以恢复,小弟容易死。但是干事情的是小弟。




23、Web Services 技术深入解析 本文深入解析了Web Services技术,重点探讨了WSServerImpl组件的生命周期管理、运行状态处理、元数据管理和服务接口方法。详细介绍了组件的初始化、启动、停止和销毁流程,以及在运行状态下对已部署对象的调整机制。此外,还分析了元数据的创建与销毁过程,以及Web服务接口的关键方法。结合实际应用场景,文章探讨了Web服务部署、更新和监控的实现方式,并提出了潜在问题的解决方案,同时展望了未来Web服务技术的发展趋势。 阅读详情

相关推荐

23、Analysis Services管理与优化指南

本博客详细介绍了SQL Server Analysis Services(SSAS)的管理与优化指南,涵盖了立方体处理流程、性能评估工具(如SQL Server Profiler和Windows Performance Monitor)、自动化处理方法(包括XMLA、AMO和PowerShell)、调度工具(如SQL Server Agent和SSIS)、安全管理、性能优化策略、监控与调优流程、常见问题解决方案以及最佳实践总结。旨在帮助用户提升Analysis Services的性能、可维护性和安全性,为企

yolo5detector的博客 87

1110 Complete Binary Tree

一般在用队列进行层序遍历时候,遇到node 左右子树为-1时,是return的,但如果要检查一棵树是不是完全二叉树,就不用return了,而是把-1也压进队列,如果在遍历的中途,队列中出现了-1,即说明不是完全二叉树。如果要检查是否为满二叉树,判断遍历完成后,node数是否等于2的level次-1即可。 #include <iostream> #include <queue&gt...

北冥有鱼 500

23、 Web Services Infrastructure: 构建稳健的Web服务架构

本文深入探讨了Web服务基础设施的关键组成部分,包括核心技术(如XML和SOAP)、命名空间、执行流程、事务处理、安全性、性能优化、发现与查找、消费、部署与发布以及调试与维护。通过这些知识和技术,开发者可以构建出高效、可靠、易于使用的Web服务。

weixin_28793831的博客 88

anbu三年模拟_暗部共享三年模拟软件库

暗部共享三年模拟软件库是非常易于使用。用户可以在其中安装下载资源,许多Internet参与者都愿意访问暗部共享三年模拟软件库来下载软件以供使用,并且其中的资源是真实的,不会有伪造的软件包,每个用户都可以放心下载。暗部共享叁年模拟软件库优势1、暗部共享叁年模拟软件库下载更加方便,欢迎各位在本款软件下载体验。2、不仅有软件的下载资源,更加丰富的下载资源都能够为你带来哦,在这里打造一款别样的资源软件。3...

weixin_32760125的博客 2万+

虚拟带库软件2019版

Virtual Tape Library consists of several components. LLD - A low level driver implemented as a kernel module - mhvtl Target devices - Daemons vtltape(1) and vtllibrary(1) which implement SCSI target device(s) in user-space Utility commands mktape(1), vtlcmd(1) And startup scripts build_library_config(1), make_vtl_devices(1)

LibTV本地部署:AI漫剧创作完整解决方案与实战指南

如果你正在关注AI漫剧创作这个赛道,可能会发现一个有趣的现象:市面上的AI视频工具要么功能单一,要么云端服务昂贵且存在内容审核风险。而今天要介绍的LibTV本地部署方案,或许能为你打开一扇新的大门。 这个方案的核心是Seedance2.0与豆包AI的本地化集成,它真正解决的是创作者对内容自主权、成本控制和创作效率的三重需求。与红果、抖音等平台提供的标准化AI工具相比,本地部署意味着你可以完全掌控生成过程,不受平台规则限制,更重要的是——所有数据都在本地,不存在内容泄露风险。 1. 这篇文章真正要解决的问题

weixin_28745309的博客 521

1071 Speech Patterns

#include <map> #include <algorithm> #include <iostream> using namespace std; int main(){ string s, temp; map<string, int> ma; getline(cin, s); for(int i = 0; i < s.lengt...

北冥有鱼 3990

NE564锁相环FM解调电路设计:10.7MHz中频实测与3种失真优化方案

本文详细解析了NE564锁相环在10.7MHz中频FM解调电路中的设计与优化方案。通过分析锁相环技术基础、电路架构设计及典型失真问题,提供了3种有效的失真优化方法,包括限幅增强、VCO频偏补偿和环路滤波优化,显著提升解调性能。文章还涵盖了PCB布局要点和系统测试验证,为高频电子线路设计提供实用参考。

weixin_33314040的博客 350

1078 Hashing

#include<iostream> #include<cmath> #include<algorithm> using namespace std; bool isprime(int n){ if(n <= 1) return false; for(int i = 2; i <= sqrt(n); i++) if(n % i == 0) r...

北冥有鱼 765

AI Agent开发大全第一课-AI是什么以及如何使用AI

近年来,人工智能的迅猛发展引发了广泛的关注,尤其是“大模型”这一概念越来越深入人心。大模型,顾名思义,通常指的是那些拥有大量参数、能够处理复杂任务的机器学习模型。与传统小模型相比,大模型在数据处理、信息理解和生成等方面表现更加出色。为了理解为什么现在的AI被称为大模型,我们需要深入探讨几个关键因素。立角色是指在提示词中清晰地界定交互双方的身份。明确用户希望模型扮演的角色,可以帮助模型更准确地理解上下文和用户需求。

打造全国最全的AI Agent开发知识领域的博客 1406

Openclaw错误分析与解决方案之:Agent couldn’t generate a response.

Openclaw错误分析与解决方案之:Agent couldn't generate a response. Note: some tool actions may have already been executed — please verify before retrying.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1315

本地 Services(服务)

Services什么是Services android中服务是运行在后台的东西,级别与activity一样。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。可以启动一个服务Service来播放音乐,或者记录地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。 服务分二种本地服务

One_sir_zeng的博客 570

c#视觉应用开发中如何使用Emgu CV在C#中进行图像处理?

Emgu CV 是 OpenCV 的 .NET 包装器,可以让开发者在 .NET 语言(如 C#)中使用 OpenCV 的功能进行图像处理。在进行图像处理时,Emgu CV 提供了丰富的 API 可以使用。PictureBoxImageBox下面是一个详细的示例,演示如何使用 Emgu CV 在 C# 中进行基本的图像处理,包括加载图像、转换为灰度图像、进行边缘检测,然后显示结果。byte在这个示例中,我们使用了三个PictureBox控件来显示原始图像、灰度图像和边缘检测后的图像。

zhangzhechun的专栏 667

Linux 禁用23端口

Linux 系统如何禁用23端口。以及在23端口被 sytemd占用的情况下,如何kill掉?

博客 7939

Jetson Orin Nano 平台适配IMX585 camera驱动调试记录

Jetson Orin Nano Devkit适配imx585 camera使用argus_camera捕获流,图片是黑色的用示波器来测量mipi信号,信号正常Jetpack版本: sensor参数: dts配置: 分析log: 如图: EBD有两行修改dts: 测试如下:log: 需要注意极性互换查看相应的原理图设置。可以使用设备树属性lane_polarity在任何lane上配置极性交换。例如, 尝试调整极性出现花屏 根据上述像素时钟配置说明调整为如下配置后,出图正常

jzwjzw19900922的博客 1322

零基础学习CANoe Panel(5)——改变变量的值,控件图像也改变,这是怎么回事?

Panel 中控件的图像随着值变化,是怎么回事?

蚂蚁小兵 2145

services - Internet 网络服务列表

DESCRIPTION(描述) services 是一个普通的 ASCII 码文件, 它在 internet 服务的友好原文名以及这些服务预先分配的端口和协议类型之间提供了映射. 每个联网程序必须查找该文件以获取其服务的端口号(和协议). C 库例程 getservent(3), getservbyname(3), getservbyport(3), setservent(3), 和 endse...

weixin_30877181的博客 574

【Cmder】--- Windows11 配置CMD神器 (超详细 持续更新中)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1万+

Headless Services无头服务

一、Headless Services介绍 Headless Services是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP。也被称为无头服务。 1、headless Service和普通Service的区别 headless不分配clusterIP headless service可以通过解析service的DNS,返回...

jingzhiz 专属移动笔记 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

统一诊断服务 (Unified diagnostic services , UDS) (一)~(七)

UDS由ISO-14229系列标准定义,ISO 14229-1 定义了诊断服务,不涉及网络及实现,只有应用层的内容。而ISO 14229-3则定义了UDS在CAN总线上的实现。 诊断通信的过程从用户角度来看非常容易理解,诊断仪发送诊断请求(request),ECU给出诊断响应(response),而UDS就是为不同的诊断功能的request和response定义了统一的内容和格式。 最近关于UDS的一系列专栏文章只关注应用层的诊断服务,忽略下层的通信机制。 Diagnostic request的格式:

usstmiracle的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

30分钟修复Magicsee N5 Max的Armbian以太网:4步搞定网卡不通

Magicsee N5 Max 刷入 Armbian 后,以太网口插上却拿不到网、`eth0` 在接口列表里查无此人,盒子只能干瞪眼。本文按“识别接口 → 核对设备树 → 升级 S905X3 内核并加载 Realtek 网卡驱动 → 带宽验收”4 步走一遍,全程约 30 分钟,每步都有确定的输出可对照,修完用 iperf3 实测确认,不靠猜。 ## 动手前确认这些 - **硬件**:Magic

gitblog_00506的博客 409

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

服务/软件管理:08---Linux端口(/etc/services文件)

一、端口特点 端口为16比特位。因此最大可达65535 二、Linux的特权端口 Linux已经规范好的固定port,这些port通常小于1024。端口启动时,必须是root权限 /etc/services文件:各类网络服务与对应的port记录文件 20 FTP-data,文件传输协议所使用的主动数据传输端口 21 FTP,文件传输协议的命令端口 22 SSH,...

董哥的黑板报 1169

/etc/services

/etc/services文件是记录网络服务名和它们对应使用的端口号及协议,很多的系统程序要使用这个文件。一般情况下,不要修改该文件的内容,否则可能会造成端口冲突 常见的服务如下,各个字段分别表示:service-name port/protocol [aliases ...] [# comment] [root@localhost ~]$ cat /etc/services ...

weixin_30387663的博客 658

使用services在后台实现下载与远程服务

使用services在后台实现下载 AndroidManifest.xml <service android:name=".MyService2" android:enabled="true" android:exported="true"> Main2Activity.java package com.zkin

XHui_Lin的博客 541

Google Services Framework 谷歌服务框架的安装以及遇到的常见问题

⑴:打开 Google 服务框架(Google Services Framework)的自启动权限。(楼主属于这种情况,未开启自启动权限时,Google Play 商店一直显示与 Google 服务器通讯有问题。如果只打开 Google 服务框架的自启动权限依旧无法登录,可以尝试将 Google Play Services(Google Play 服务)的自启动权限也打开。注意一定要选择与自己手机对应的系统版本进行下载,DPI也需要符合要求。注意一定要选择与自己手机对应的安卓系统版本的服务框架。

Jia_Feng_的博客 12万+
上一篇: 22.系统广播-短信
下一篇: 24.Android-实现黑名单电话拦截
_北冥有鱼_
博客等级 码龄10年 41粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值