自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Hilt依赖注入

控制反转(IOC)如果一个类A 的功能实现需要借助于类B,那么就称类B是类A的依赖,如果在类A的内部去实例化类B,那么两者之间会出现较高的耦合,一旦类B出现了问题,类A也需要进行改造,如果这样的情况较多,每个类之间都有很多依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。要解决这个问题,就要把A类对B类的控制权抽离出来,交给一个第三方去做,把控制权反转给第三方,就称作控制反转(IOC Inversion Of Control)。控制反转是一种思想,是能够解决问题的一种可能的结果

2020-12-16 23:02:24 992

原创 Service学习以及BindService的使用

Service什么是ServiceService是一个可以在后台执行长时间操作而不使用用户界面的应用组件。如何使用Service我们首先需要实现一个Service的子类。主要实现Service的onCreat(),onStartCommand(),onBind(),onDesroy(),其中onBind()只有在需要与activity有交互的时候才会调用。由于很多时候我们需要在servic...

2020-05-17 09:09:15 814

原创 奈飞文化手册

只招成年人“成年人”指的是有着独立的人格和成熟心智,有着自律自强自立的品格,有着一颗积极向上的心态和明确的目标并为之奋斗的人。成年人是喜欢解决问题的一类人,而不是喜欢为企业制造问题,更不是逃避自己责任的人,碰到任何困难会想解决办法而不是整天怨天尤人,或者在问题责任人不明确的时候,推卸责任。这种人工作会为公司省很多心,也为今后内部开展工作无形之中提高了效率。让团队每一个人都能理解公司业务首先我...

2020-04-25 22:52:45 1074

原创 AsyncTask 的源码分析

AsyncTask 的源码分析基础知识学习ThreadPoolExecutor分析关键参数分析corePoolSize:最大的核心线程数,默认情况下,核心线程会一直存活。maximumPoolSize:线程池中最大线程数量(核心和非核心线程总数),如果活动线程数等于最大值是,后续的新任务还会被阻塞。keepAliveTime:非核心线程的保留时间,超时会被回收。unit:keepA...

2020-04-17 22:00:55 211

原创 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 135

原创 Loader简介以及CursorLoader的使用

Loader简介Loader是一种封装特别好的异步加载资源的方式,我们可以通过继承AsyncTaskLoader或者Loader来实现我们的异步加载资源,也可以通过谷歌原生的子类来实现一些简单的异步资源加载,比如CursorLoader就比较适用于加载数据库,ContentProvider或者手机中的图片联系人等资源。CursorLoader的使用为了更好的体验Loader的强大,我们可以尝...

2019-11-12 15:53:58 497

原创 Android消息机制

Android消息机制Message消息对象MessageQueue消息队列的主要功能向消息池投递消息(MessageQueue.enqueueMessage())和取走消息池的消息(MessageQueue.next());Handler消息辅助类,主要功能向消息池发送各种消息事件(Handler.sendMessage)和处理相应消息事件(Handler.handleMessage...

2019-10-08 20:45:50 108

原创 Android View的点击事件传递

Android View的基础知识学习View的定义view是Android中所有组件的父类,不管是Button或者TextView这样的初学者所了解的简单的View,还是ViewGroup,LinearLayout等,都是View的子类。点击事件点击事件就是MotionEvent,即手指接触屏幕之后产生的一系列事件,一般需要关注的事件类型是:ACTION_DOWN就是手指刚刚接触屏幕...

2019-10-07 21:03:17 1179

转载 马尔科夫聚类算法

背景: 聚类算法分为两类:向量聚类和图聚类,而马尔科夫就是属于图聚类算法。Random Walks:一个图中,如果有好几个聚类,聚类中的线比较密集,而聚类之间的线比较少,那么从一个点开始随机行走,那么我们更可能待在同一个聚类中,所以这就是马尔科夫聚类算法的中心思想:通过Random Walks,我们可以发现流在哪里汇聚,这样我们就可以发现聚类了。Random Walks 是通过“Ma...

2019-02-22 18:09:21 4230

原创 卡片式布局以及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 1002

原创 自定义弹框

首先是类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 184

原创 Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error:

在导入别人的项目的时候会出现,在项目的gradle.properties中添加: android.enableAapt2=false

2017-12-27 13:51:36 279

原创 Android 图片的存取

最近写到一个题目,需要我把图片保存到手机。我实现的方法是结合Litepal,创建一个数据库,表中含有我的图片的路径以及图片的名称。 QR是我定义的用于创建表的类。要把图片存入手机的外部存储设备,可以先判断是否挂载,通过Environment.getExternalStorageState()是否和Environment.MEDIA_MOUNTED一致,然后通过Environment.getExte

2017-12-26 15:12:18 315

原创 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 311

原创 AlertDialog的用法

这是写在activity里的代码 private View choseChapter; addChapter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LayoutInflater in

2017-12-26 13:39:02 169

原创 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 2155 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 518

原创 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 8712

原创 编程团体赛

#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 229

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除