自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QQ小冰 的博客

从入门开始,每一天的我都要有收获

  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android 多线程、线程池

在异步请求中,Retrofit会自动将请求放在一个新的线程中执行,而在同步请求中,请求将在当前线程中执行。如果我们需要在请求中指定线程,可以使用Call接口的enqueue()方法的重载版本,该版本接受一个Callback对象和一个Executor对象作为参数,我们可以在Executor对象中指定线程池来执行请求。当我们执行异步任务时,任务的结果会在主线程中返回,并在主线程中处理。需要注意的是,如果我们在主线程中执行耗时操作,例如网络请求或数据库查询,会导致UI线程阻塞,从而导致应用程序响应性能下降。

2024-03-13 13:54:05 1063

原创 Android自定义view从入门到高级

快速学会自定义view,

2024-03-13 13:32:27 907

原创 Android使用C++库,头文件无法引用,以及引用静态so库

② 参数 2 ( SHARED ) : 设置引入的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED。# ③ 参数 3 ( IMPORTED ) : 表示引入第三方静态库 , 导入静态库 , 相当于预编译静态库。# 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED。# ① 参数 1 ( add ) : 设置引入的静态库名称。# ④ 参数 4 : 配置静态库的文件路径。

2023-04-26 14:27:30 1289

原创 Android上架隐私合规检测方式

Android 隐私检测

2022-08-31 16:03:26 1319

原创 Android 使用ADB命令向上滑动解锁

/** * 执行命令并且输出结果 */fun execRootCmd(cmd: String): String? { var result: String? = "" var dos: DataOutputStream? = null var dis: DataInputStream? = null try { val p = Runtime.getRuntime().exec("su") // 经过Root处理的android系统即有su命令 .

2021-07-28 14:16:30 3615

原创 Android仿高德地图首页底部拉起弹窗BottomSheetBehavior

<iframe height=498 width=510 src='https://player.youku.com/embed/XNTA2MTc0OTU2MA==' frameborder=0 'allowfullscreen'></iframe>

2021-01-15 13:47:10 3003 8

原创 Android 使用硬解码快速获取视频每一帧的数据并保存在本地

public class VideoToFrames implements Runnable { private static final String TAG = "VideoToFrames"; private static final boolean VERBOSE = false; private static final long DEFAULT_TIMEOUT_US = 10000; private static final int COLOR_FormatI.

2020-12-08 13:28:28 1241

原创 Android 使用DownloadManager下载自动安装APK

一、使用DownloadManager 下载文件DownloadManager downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);//Uri.parse(apkUrl) 指定文件下载地址DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadUrl));request.setMimeType.

2020-11-12 14:09:39 667

原创 Android面试问题大全

总览UDPTCP1. C->S:SYN,seq=x(你能听到吗?)2. S->C:SYN,seq=y,ack=x+1(我能听到,你能听到吗?)3. C->S:ACK,seq=x+1,ack=y+1(我能听到,开始吧)两方都要能确保:我说的话,你能听到;你说的话,我能听到。所以需要三次握手1. C->S:FIN,seq=p(我说完了)2. S->C:ACK,ack=p+1(我知道了,等一下,我可能还没说完)3. S-&gt...

2020-07-06 09:33:17 364

原创 连接蓝牙设备出现read failed, socket might closed or timeout, read ret: -1问题之完美解决

在socket.connect();加入反射,将返回的-1改成1socket =(BluetoothSocket) device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}).invoke(device,1);第二步,socket.connect();必须在一个新的线程里面写

2020-06-08 11:15:52 11667 4

原创 android初中级面试必备

1. Activity# Activity的四大启动模式,以及应用场景?Activity的四大启动模式: standard:标准模式,每次都会在活动栈中生成一个新的Activity实例。通常我们使用的活动都是标准模式。 singleTop:栈顶复用,如果Activity实例已经存在栈顶,那么就不会在活动栈中创建新的实例。比较常见的场景就是给通知跳转的Act...

2020-04-29 10:46:29 343

原创 Android保活方式

我们申请把应用加入白名单。首先,在 AndroidManifest.xml 文件中配置一下权限:<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />复制代码可以通过以下方法,判断我们的应用是否在白名单中:@RequiresApi(api ...

2019-12-23 10:34:04 731

原创 jarsigner签名APK完整步骤

1、打开cmd,进入JDK的bin目录下面2、jarsigner -verbose -keystore (1)xxx.jks -signedjar (2)xxx.apk (3)xxx.apk (4)alias1代表签名文件路径2代表签名完成APK保存路径3代表待签名APK路径4签名文件别名完整命令:jarsigner -verbose -keystore xxx.jks -...

2019-12-04 13:26:05 663

原创 Android大厂面试常问

synchronize用法volatile用法动态权限适配方案,权限组的概念网络请求缓存处理,okhttp如何处理网络缓存的图片加载库相关,bitmap如何处理大图,如一张30M的大图,如何预防OOM进程保活listview图片加载错乱的原理和解决方案https相关,如何验证证书的合法性,https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解LRUCa...

2019-10-24 13:40:43 219

原创 Java-常见设计模式

单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧publicclassSingleton...

2019-10-09 16:43:14 118

原创 Android 面试常见Java问题大全-5

异常74. throw 和 throws 的区别?throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。75. final、finally、finalize 有什么区别? final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方...

2019-10-09 16:39:29 122

原创 Android 面试常见Java问题大全-4

反射57. 什么是反射?反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力Java反射:在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类。 在运行时构造任意一个类的对象。 在运行时判...

2019-10-09 16:38:27 119

原创 Android 面试常见Java问题大全-3

多线程35. 并行和并发有什么区别? 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群。 所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性...

2019-10-09 16:37:37 113

原创 Android 面试常见Java问题大全-2

18. java 容器都有哪些?常用容器的图录:19. Collection 和 Collections 有什么区别? java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最...

2019-10-09 16:37:01 176

原创 Android 面试常见Java问题大全-1

1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 j...

2019-10-09 16:36:06 177

原创 Android开发学习路线

初级技术要求:- 基本知识点比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画等常见技术- 书籍推荐《第一行代码 Android》、《疯狂Android》中级- AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;- Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的...

2019-09-24 14:20:50 289

原创 Android使用谷歌chrome浏览器调试webview方法和解决白屏的问题

1、手机和PC都需要下载按照chrome浏览器。2、手机打开开发者模式并且通过USB接口连接到PC上。3、打开电脑上的Chrome,在地址栏里输入about:inspect选中 【Discover USB Devices】前面的复选框。4、点击检测到的设备上正在运行的网站下面那个【inspect】,或者在浏览器中输入 localhost:9222 打开手机正在浏览的网页列表5、...

2019-08-26 16:38:57 2772

原创 Android加载等待

public class MyLoadingDialog extends Dialog { public MyLoadingDialog(Context context) { super(context); } public MyLoadingDialog(Context context, int themeResId) { super(...

2019-02-19 14:57:20 791

转载 Android屏幕适配详解

前言Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合:Google的官方权威适配文档郭霖: Android官方提供的支持不同屏幕大小的全部方法Stormzhang:Android 屏幕适配鸿洋:Android 屏幕适配方案凯子: Android屏幕适配全攻略(最权威的官方适配指导)自身的思考&amp;实践 给你带来一种全新、全面而逻辑清晰的Android屏幕适配思路,...

2018-06-15 11:03:43 326

原创 解决dialog圆角问题

首先在xml里面写一个圆角背景,这个时候使用是没有用的只要加上下面两句就OK了Window dialogWindow = dialog.getWindow();dialogWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));...

2018-05-25 15:34:17 1928

原创 Android 省市区三级联动选择

首先添加依赖compile 'liji.library.dev:citypickerview:0.7.0'然后创建一个textview用来显示最后确定的地址,给TextView添加点击事件,调用下面方法:private void selectAddress() { CityPicker cityPicker = new CityPicker.Builder(getActivity()) ...

2018-05-22 16:27:55 491 1

原创 Android十大主流开源框架使用教程---Retrofit使用教程

首先第一步还是添加依赖compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:converter-gson:2.1.0'准备开始get请求创建一个接口,用来存放请求的方法@get是选择请求的方式,后面的内容为追加的URL需要添加请求头的可以加一个@headers("")public interf...

2018-04-12 16:15:39 364

原创 Android十大主流开源框架使用教程---OKHTTP使用教程

OKHTTP是目前流行的网络开源框架,下面提供使用教程:主要包括基本的get,post请求,带参数的请求文件上传文件下载,以及图片的加载首先,添加OKHTTP的两个依赖compile 'com.squareup.okhttp3:okhttp:3.8.0'compile 'com.squareup.okio:okio:1.5.0'进行get请求//创建一个对象,并设置请求时间5秒OkHttpCli...

2018-04-04 14:47:11 531

原创 Android图片压缩工具-----luban压缩

为了使自己的项目在需要使用图片的时候不出现oom,我们或多或少都会使用几个压缩图片的工具,这里就来介绍一个luban压缩工具。这是luban压缩工具的效果和微信压缩效果对比内容原图LubanWechat截屏 720P720*1280,390k720*1280,87k720*1280,56k截屏 1080P1080*1920,2.21M1080*1920,104k1080*1920,112k拍照 1...

2018-03-13 14:07:05 505

原创 activity的隐式调用

       启动activity可以是显示调用或者隐式调用,显示调用需要明确的指定被启动对象的组件信息,而隐式调用需要intent能够匹配目标组件的intentFilter中所设置的过滤信息,如果不匹配,则无法启动目标activity。       一个intent必须要同时匹配action类别,category类别,data类别才算完全匹配,只有完全匹配才能成功的启动目标activity。一个...

2018-02-28 09:56:12 483

原创 activity的启动模式详解

在默认情况下,当我们启动activity的时候,系统会创建一个实例并放入任务战中,任务栈是一种后进先出的结构。目前有四种启动模式:standard,singleTop,singleTask,singleInstance(1)standard:标准模式,如果不特殊申明,这也是系统的默认模式。每次启动一个activity都会重新创建一个新的实例,不管这个实例是否在任务栈中存在。在这种模式下,谁启动了这...

2018-02-27 15:49:16 200

转载 GitHub控件之BadgeView(数字提醒) android 未读消息红点

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42262369    数字提醒大家肯定都见识过。QQ、微信等app中如果有消息或者提醒的时候,就会展现给用户一个红点或者带有数字的点。前段时间微信上流行把自己的头像换成带有数字提醒的头像,让那些有强迫症的人真是抓狂。    下面我们就看一下怎么在自己的app中实现这种效果。    开发者...

2018-02-26 14:32:41 533

原创 自定义viewpager实现滑动拦截与分发解决嵌套listview等滑动冲突问题

首先贴上自定义viewpager,主要通过判断用户滑动界面的方向来实现滑动的拦截。当用户滑动方向为左右滑动时,拦截该滑动事件,并自己处理(使viewpager滑动翻页),当滑动的方向为上下时,将滑动事件分发给子view处理。public class MyViewPager extends ViewPager { //mViewTouchMode表示ViewPager是否全权控制滑动事件...

2018-02-12 11:04:26 396

原创 在viewpager里添加fragment

List&lt;Fragment&gt; list=new ArrayList&lt;Fragment&gt;();list.add(new LostFragment());list.add(new FoundFragment());list.add(new UserFragment());FragmentAdapter fragmentAdapter=new FragmentAdapte...

2018-02-12 11:03:25 735

原创 android圆形头像工具

工具类代码,记下来以后用。。public class CircleImageView extends android.support.v7.widget.AppCompatImageView { //缩放类型 private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP; private static f...

2018-02-11 17:44:03 216

原创 自定义SideBar---电话簿

public class MySideBar extends View { private OnTouchingLetterChangedListener onTouchingLetterChangedListener; public Paint paint=new Paint(); private int choose=-1;//选中的 public MySide

2018-02-01 16:08:31 313

原创 android自定义view之下拉刷新listview

首先创建一个header布局界面头部xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#C9C9C9" >

2018-01-29 14:38:42 211

原创 android 使用内存缓存机制缓存图片,优化listview,recylerview

首先解释一下为什么要用内存缓存,内存缓存好在哪里?一个从网络下载下来的图片要在用户界面显示。不可能每一次打开都花费用户的流量去网上下载图片(并且下载需要时间,就会造成卡顿的现象),内存缓存主要运用在listview,recylerview等这种类型上,使加载图片时保证用户的操作流畅感。缓存一般要做三层,首先就是内存缓存,内存缓存没有数据就向本地缓存拿取数据,本地缓存没有就拿取网络缓存。

2018-01-26 16:49:45 260

原创 自定义view实现仪表盘,时钟

简单粗暴上代码 WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); int mWidth = wm.getDefaultDisplay().getWidth(); int mHeight = wm.getDefaultDisplay().getHe

2018-01-26 16:25:23 297

原创 android自定义条形图

直接先上图看效果private int wx;private int QQ;private int x = 100;Point pa = new Point(10, 10);Point pb = new Point(20, 40);Point po = new Point();private String[] kedu = {"0 -", "1000 -", "2000

2018-01-26 16:22:07 560

电商网站 ---购物车逻辑代码实现

打算做一个电商APP的模板,目前做了引导页,banner,购物车。这里主要体现购物车的实现

2018-02-11

空空如也

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

TA关注的人

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