Android 如何实现保活app
Android 如何实现保活 app(电池医生实现)基础理论保活Service需要做什么
应用被关闭的时候保活(最难)
在内存占用过大,系统自动释放内存时保活(优先杀死占用较高的Service)
重启手机后自动开启Service
手机息屏后不被释放内存
手机清理内存时保活
进程的五个常用级别:
前台进程(Foreground process):前台进程就是用户当前要处理的所有事情都必须要使用的进程。满足下面的各种情况则认为是前台进程。 杀死前台进程需要用户交互,前台进程的优先级最高
进程持有一个正在和用户交互的 Activity。
进程持有一个 Service,这个 Service 处于这几种状态:1. Service 与用户正在交互的 Activity 绑定。 2. Service 是在前台运行的。 3. Service 正在执行它的生命周期 onCreate() ,onStrarCommand,onDestroy。 4. 进程持有一个 BroadcastReceiver 这个 BroadcastReceiver 正在执行它的 onReceiver 方法。
可见进程(Visi ...
安卓日常学习遇到的bug
安卓日常学习遇到的问题解决使用SharedPreferences来存储数据1.Context 类中的 getSharedPreferences()方法
第一个参数用于指定**SharedPreferences**文件的名称,如果指定的文件
不存在则会创建一个,SharedPreferences 文件都是存放在/data/data//shared_prefs/
目录下的。第二个参数用于指定操作模式,目前只有 MODE_PRIVATE这一种模式可选,它是默
认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个
SharedPreferences文件进行读写。
2.Activity 类中的 getPreferences()方法
只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences的文件名。
3.PreferenceManager类中的 getDefaultSharedPreferences()方法
这是一个静态方法,它接收一个Context*参数,并自动使用*当前应 ...
JobService(电量优化)
JobService概述JobService用于执行一些需要满足特定条件但不紧急的后台任务,利用 JobScheduler 来执行这些特殊的后台任务来减少电量的消耗。开发者可以设定需要执行的任务JobService,以及任务执行的条件 JobInfo,JobScheduler 会将任务加入到队列。在特定的条件满足时 Android 系统会去批量的执行所有应用的这些任务,而非对每个应用的每个任务单独处理。这样可以减少设备被唤醒的次数。
主要运营场景:app服务保活,电量优化,在手机电量不能太低情况下推送,开启服务,延迟1分钟再推送。
机制原理主要类似于Handle机制的实现,通过JobInfo.Builder生成JobInfo信息,然后JobSchedule通过JobInfo开启JobService
实例分析步骤实现
写一个服务继承JobService
清单文件注册并且加权限android:permission=“android.permission.BIND_JOB_SERVICE”(如果JobService未申请权限或者申请的权限未被授予,系统将忽略该jobService ...
ConstraintLayout 用法全解析
约束布局所具有的优势:1.较高的性能优势。
布局嵌套层次越高,性能开销越大。而使用ConstraintLayout,经常就一层嵌套就搞定了,所以其性能要好很多。
2.完美的屏幕适配. ConstraintLayout的大小、距离都可以使用比例来设置,所以其适配性更好。
3.书写简单
4.可视化编辑。 ConstraintLayout也有十分方便完善的可视化编辑器,不用写xml也基本上能实现大部分功能
定位位置确定位置的属性提供了下面13个属性(就是哪一条边和哪一条边对齐)
layout_constraintLeft_toLeftOf
layout_constraintLeft_toRightOf
layout_constraintRight_toLeftOf
layout_constraintRight_toRightOf
layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layou ...
第一行代码Kotlin编程
第二章:快速入门Kotlin编程2.5 面向对象的编程2.54 数据类与单例类在一个规范的系统架构中,数据类通常占据非常重要的角色,它们用于将服务器或数据库中的数据映射到内存中,为编程逻辑提供数据模型的支持。
在Kotlin中,只需要在类的前面加上data关键词即可
1data class Cellphone(val brand: String, val price: Double)
只要声明了data关键词,则这个类就是数据类
测试代码
123456fun main() { val cellphone1 = Cellphone("Samsung", 1299.99); val cellphone2 = Cellphone("Samsung", 1299.99); println(cellphone1) println(cellphone1 == cellphone2)}
当一个类中没有任何代码时,还可以将尾部的大括号省略
Kotlin特有的功能——单例类
在Kotlin中创建一个单例类只需要将class ...
安卓日常学习问题记录
通知的使用通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。
通知的基本用法通知的用法还是比较灵活的,既可以在活动里创建,也可以在广播接收器里创建,服务里创建。相比于广播接收器和服务,在活动里创建通知的场景还是比较少的,因为一般只有当程序进入到后台的时候我们才需要使用通知。
下面我们就来学习一下创建通知的1.详细步骤。首先需要一个NotificationManager来对通知进行管理,可以调用Context的 getSystemService() 方法获取到。 getSystemService() 方法接收一个字符串参数用于确定获取系统的哪个服务,这里我们传入 Context.NOTIFICATION_SERVICE即可。获取到通知服务。
2.接下来需要使用一个 Builder 构造器来创建 Notification 对象,现在只是创建了一个空的 Notification 对象,并没有什么实际作用,我们可以在最终的 build() 方法之前连缀任意多的设置方法来创 ...
计算机网络
计算机网络TCP/IP模型
TCP/IP协议族按照层次由上到下,层层包装。
第一层是应用层,这里面有http,ftp,等等我们熟悉的协议。
第二层是传输层,著名的TCP和UDP协议就在这个层次。
第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。
第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。
IP协议是TCP/IP协议的核心,所有的TCP,UDP,ICMP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议——TCP或UDP要做的事情。
IP地址在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是 ...
剑指Offer算法学习
剑指OfferDay03剑指Offer0.5替换空格请实现一个函数,把字符串 s 中的每个空格替换成”%20”。
字符串为不可变对象
示例 1:
12输入:s = "We are happy."输出:"We%20are%20happy."
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
知识点运用到String的toCharArray() 可以将字符串转换成字符数组
字符之间的拼接用StringBuffer,append()方法可以添加字符串或者字符
1234567891011121314public String replaceSpace(String s) { StringBuffer res = new StringBuffer(); for(Character c:s.toCharArray()){ if(c== ...