- 博客(19)
- 收藏
- 关注
原创 Hilt依赖注入
控制反转(IOC)如果一个类A 的功能实现需要借助于类B,那么就称类B是类A的依赖,如果在类A的内部去实例化类B,那么两者之间会出现较高的耦合,一旦类B出现了问题,类A也需要进行改造,如果这样的情况较多,每个类之间都有很多依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。要解决这个问题,就要把A类对B类的控制权抽离出来,交给一个第三方去做,把控制权反转给第三方,就称作控制反转(IOC Inversion Of Control)。控制反转是一种思想,是能够解决问题的一种可能的结果
2020-12-16 23:02:24
1068
原创 Service学习以及BindService的使用
Service什么是ServiceService是一个可以在后台执行长时间操作而不使用用户界面的应用组件。如何使用Service我们首先需要实现一个Service的子类。主要实现Service的onCreat(),onStartCommand(),onBind(),onDesroy(),其中onBind()只有在需要与activity有交互的时候才会调用。由于很多时候我们需要在servic...
2020-05-17 09:09:15
867
原创 奈飞文化手册
只招成年人“成年人”指的是有着独立的人格和成熟心智,有着自律自强自立的品格,有着一颗积极向上的心态和明确的目标并为之奋斗的人。成年人是喜欢解决问题的一类人,而不是喜欢为企业制造问题,更不是逃避自己责任的人,碰到任何困难会想解决办法而不是整天怨天尤人,或者在问题责任人不明确的时候,推卸责任。这种人工作会为公司省很多心,也为今后内部开展工作无形之中提高了效率。让团队每一个人都能理解公司业务首先我...
2020-04-25 22:52:45
1165
原创 AsyncTask 的源码分析
AsyncTask 的源码分析基础知识学习ThreadPoolExecutor分析关键参数分析corePoolSize:最大的核心线程数,默认情况下,核心线程会一直存活。maximumPoolSize:线程池中最大线程数量(核心和非核心线程总数),如果活动线程数等于最大值是,后续的新任务还会被阻塞。keepAliveTime:非核心线程的保留时间,超时会被回收。unit:keepA...
2020-04-17 22:00:55
270
原创 View的绘制流程梳理
View的绘制流程梳理MeasureSpec由于在绘制过程中,这个变量作为参数,与所有的View的measure都有关系。首先介绍一下MeasureSpec的计算过程private static final int MODE_SHIFT = 30;private static final int MODE_MASK = 0x3 << MODE_SHIFT;public s...
2020-04-16 19:21:34
167
原创 Loader简介以及CursorLoader的使用
Loader简介Loader是一种封装特别好的异步加载资源的方式,我们可以通过继承AsyncTaskLoader或者Loader来实现我们的异步加载资源,也可以通过谷歌原生的子类来实现一些简单的异步资源加载,比如CursorLoader就比较适用于加载数据库,ContentProvider或者手机中的图片联系人等资源。CursorLoader的使用为了更好的体验Loader的强大,我们可以尝...
2019-11-12 15:53:58
550
原创 Android消息机制
Android消息机制Message消息对象MessageQueue消息队列的主要功能向消息池投递消息(MessageQueue.enqueueMessage())和取走消息池的消息(MessageQueue.next());Handler消息辅助类,主要功能向消息池发送各种消息事件(Handler.sendMessage)和处理相应消息事件(Handler.handleMessage...
2019-10-08 20:45:50
141
原创 Android View的点击事件传递
Android View的基础知识学习View的定义view是Android中所有组件的父类,不管是Button或者TextView这样的初学者所了解的简单的View,还是ViewGroup,LinearLayout等,都是View的子类。点击事件点击事件就是MotionEvent,即手指接触屏幕之后产生的一系列事件,一般需要关注的事件类型是:ACTION_DOWN就是手指刚刚接触屏幕...
2019-10-07 21:03:17
1267
转载 马尔科夫聚类算法
背景: 聚类算法分为两类:向量聚类和图聚类,而马尔科夫就是属于图聚类算法。Random Walks:一个图中,如果有好几个聚类,聚类中的线比较密集,而聚类之间的线比较少,那么从一个点开始随机行走,那么我们更可能待在同一个聚类中,所以这就是马尔科夫聚类算法的中心思想:通过Random Walks,我们可以发现流在哪里汇聚,这样我们就可以发现聚类了。Random Walks 是通过“Ma...
2019-02-22 18:09:21
4364
原创 卡片式布局以及RecycleView的用法
配置build.gradle文件: compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.android.support:cardview-v7:26.1.0'然后是两个布局文件: 显示的界面:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:
2018-01-07 15:28:57
1037
原创 自定义弹框
首先是类package com.hao;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.Window;import andro
2018-01-07 12:31:25
222
原创 Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error:
在导入别人的项目的时候会出现,在项目的gradle.properties中添加: android.enableAapt2=false
2017-12-27 13:51:36
325
原创 Android 图片的存取
最近写到一个题目,需要我把图片保存到手机。我实现的方法是结合Litepal,创建一个数据库,表中含有我的图片的路径以及图片的名称。 QR是我定义的用于创建表的类。要把图片存入手机的外部存储设备,可以先判断是否挂载,通过Environment.getExternalStorageState()是否和Environment.MEDIA_MOUNTED一致,然后通过Environment.getExte
2017-12-26 15:12:18
341
原创 Android 手机震动的实现
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE); vib.vibrate(95);<uses-permission android:name="android.permission.VIBRATE" />
2017-12-26 14:36:46
357
原创 AlertDialog的用法
这是写在activity里的代码 private View choseChapter; addChapter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LayoutInflater in
2017-12-26 13:39:02
218
原创 Litepal的用法以及dbname is empty的解决
要使用Litepal的步骤如下: 1.引入JAR包以及更改配置 使用Android Studio在项目的build.gradle中添加: dependencies { compile 'org.litepal.android:core:1.6.1' } 其中1.6.1是版本号,可以根据需求改变。 然后配置litepal.xml文件,一般先在app/src/main目录下新建一个
2017-12-25 15:55:22
2217
1
原创 AndroidStudio导出APK
点击Build ,然后选择Generate Signed APk … 如果已经有了Key文件则用有了的,不然点击Create new 新建一个Key,选择Key文件的存储位置,接下来密码,确定,Alias随便填写,然后密码,然后填写一下你的名字等信息,点击OK,之后选择你的Key文件,点击Next 这里是选择你的APK的存储路径,他会在这个路径下新建一个文件夹,名字为release或者debug
2017-12-11 01:20:29
565
原创 ListView的用法以及即时刷新
最近写了一个关于Android开发的项目,其中用到了ListView,在这里总结一下。这是我的ListView<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
2017-12-10 16:15:11
8818
原创 编程团体赛
#include<iostream>#include<string.h>using namespace std;void change(char a[][10],int N,int b[][2]){ for(int i=0;i<N;i++) for(int j=0;j<strlen(a[i]);j++) { if(a[i][j]=='-')
2017-11-23 00:09:36
271
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人