目录
- 记录
- 补充
- 额外补充
- 结构体
- fork()系统调用的特性
- 指针与const
- 友元关系
- 复杂度
- 抽象类的规定
- 常成员函数
记录
android 7.0
在服务正常运行时候,如果此时直接关闭app,结束进程,此时不会调用ondestroy,而是会调用onStartCommand,虽然很奇怪,但确实是这样的,感觉是服务设置了类似断线重连接的机制。
因此如何要实现程序一直运行服务,那么可以这个函数连进行服务是否存在判断,然后如果服务不存在了,直接进行服务的重启,即服务创建,然后服务重启,从而实现服务的一直有效。
判断服务是否存在
android防止service多次执行onStartCommand
第三方软件自启动代码
Android 启动第三方应用的几种方法(整理)【转】
开机自启动添加链接描述
补充
该博文写于2021-11-22 20:40:16,当时由于接触Android studio也不久,因此整体都属于摸索阶段,现在再看android 中的server组件,其实也逐渐打消了之前的疑问,不得不感叹server在Android studio真是好用。
本博文提及的内容,包括server组件也在后面的博文中有出现,主要是实现进程保活和自启动,与本博文记录的需求类似,如有需要,可以查看博文【java】 定时器+线程+自动唤醒APP函数+结束进程 +UDP收发 的工具函数封装,开发的守护进程软件也已经上传,可以直接下载使用。
额外补充
核心部分就先到这!接下来,是一些个人平时整理的c++要点概要,如有需要可以进行阅读!
结构体
- 第一种是最基本的结构体定义, 其定义了一个结构体 A。
struct A { int a;};
- 第二种则是在定义了一个结构体 B 的同时定义了一个结构体 B 的变量 m。
struct B { int b;}m;
- 第三种结构体定义没有给出该结构体的名称, 但是定义了一个该结构体的变量 n, 也就是说,若是想要在别处定义该结构体的变量是不行的, 只有变量 n 这种在定义结构体的同时定义变量才行。
struct { int c;}n;
- 第四种结构体定义在第一种结构定义的基础上加了关键字
typedef
, 此时我们将struct D{int d}
看成是一个数据类型, 但是因为并没有给出别名, 直接用 D 定义变量是不行的。 如D test;
,不能直接这样定义变量 test。 但struct D test;
可行。
typedef struct D { int d;};
- 第五种结构体定义在第四种结构体定义的基础上加上了别名 x, 此时像在第四种结构体定义中说得那样, 此时的结构体 E 有别名 x, 故可以用 x 定义 E 的结构体变量。 用 E 不能直接定义, 需要在前面加
struct,
如struct E test;
。
typedef struct E { int e;}x;
- 第六种结构体定义在第五种的基础上减去了结构体名, 但是若是直接使用 y 来定义该结构体类型的变量也是可以的。 如
y test;
。 (常用)
typedef struct { int f;}y;
fork()系统调用的特性
fork()系统调用是 Unix 下以自身进程创建子进程的系统调用, 一次调用, 两次返回, 如果返回是 0, 则是子进程, 如果返回值>0, 则是父进程(返回值是子进程的 pid) 。 还有一个很重要的东西是, 在 fork()的调用处, 整个父进程空间会原模原样地复制到子进程中, 包括指令, 变量值, 程序调用栈, 环境变量, 缓冲区, 等等。
指针与const
- const A * 等价 A const * 。
- 允许用 A * 赋值 A const * 。
- 允许用 A* * 赋值 A const* const * 。
- 不允许用 A* * 赋值 A const* * 。
友元关系
友元关系是单向的, 不是对称, 不能传递。
- 关于传递性, 有人比喻: 父亲的朋友不一定是儿子的朋友。
- 那关于对称性, 是不是: 他把她当朋友, 她却不把他当朋友? 如, 类 A 是类B 的友元, 类 C 是类 A 的公有派生类。 则类 C 不是类 B 的友元, 类 B 不是类 A 的友元
复杂度
- vector 插入 ,该位置插入后后面的都要改变 O(n)
- Set 底层红黑树 O(logn)
- Hash_map 底层哈希表 O(1)
- Deque 尾部可以直接修改 O(1)
抽象类的规定
- 抽象类只能用作其他类的基类, 不能建立抽象类对象。
- 抽象类不能用作参数类型、 函数返回类型或显式转换的类型。
- 可以定义指向抽象类的指针和引用, 此指针可以指向它的派生类, 进而实现多态性。
常成员函数
const void print(const int num)const
- 第一个 const 修饰返回类型
- 第二个 const 修饰参数
- 第三个 const 修饰类的成员函数
常成员函数声明: 形如 void funcName(参数表) const;
对于常成员函数需要注意:
- 其实现部分也要带 const 关键字;
- 不能修改类的成员变量, 不能调用类中没有被 const 修饰的成员函数(即只能调用常成员函数) 。