
学习笔记
liulq2018
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
android adb 抓取日志
1.使用adb logcat -c清除缓存2.运行adb logcat -v time >./log.log即可开始抓取日志。">"后面接文件存储位置。“control+c”结束抓取。原创 2022-07-06 11:37:16 · 895 阅读 · 1 评论 -
微信开源工具AndResGuard
**1、简介**AndResGuard是一个帮助你缩小APK大小的工具,他的原理类似JavaProguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat变为r/d/a。AndResGuard不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文原创 2022-04-20 18:11:52 · 3454 阅读 · 0 评论 -
Android Q 分区存储适配-文件上传
文件上传以常用的网络框架okhttp为例1、见文件复制到应用专属目录下,可继续使用File路径进行上传;2、将uri转换为byte[],如下RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), uriToByteArray(context, uri)); public static byte[] uriToByteArray(Context context, Uri uri)原创 2021-01-11 17:50:56 · 384 阅读 · 0 评论 -
Android Q 分区存储适配-常见问题
Download目录下的自己app创建的文件,如果app被卸载重装后还能直接访问吗答:不可以,将等同其他应用产生的文件。媒体类的文件需要申请动态存储权限,非媒体类的文件则需要使用SAF用户卸载安装后再次访问自己原有的公共目录下的下载数据相当于其他应用访问的设定否合理?初衷是安全上的考虑,应用卸载后,如果有仿冒的同包名应用安装,不希望它能够后台能够无权限获取原来应用的数据。问题...原创 2020-08-04 18:28:03 · 280 阅读 · 0 评论 -
Android Q 分区存储适配-文件创建与保存
私有目录可以使用File API 进行保存与编辑删除等共享目录使用MediaStore创建文件 public Uri createFile(Context context,String fileName) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { return null; } ContentResolver resolver =context.getCo原创 2020-08-04 18:18:52 · 691 阅读 · 0 评论 -
Android Q 适配--分区存储适配
前言为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储设备的分区访问权限(即分区存储(Scoped Storage))。。官方翻译称为分区储存,也有称为沙盒模式。Android Q 已发布1年多了,现在才开始做**分区存储(Scoped Storage)**适配,有点惭愧啊。了解权限Android Q仍然使用READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE作为存储相原创 2020-08-04 17:26:30 · 534 阅读 · 0 评论 -
GridLayoutManager.SpanSizeLookup 白话文描述使用
今天就讲它的两个方法getSpanIndex和getSpanSizegetSpanIndex(position: Int, spanCount: Int)abstract Int getSpanSize(position: Int)解释下下getSpanSize 是返回该item所占据份数getSpanIndex 是返回该item占据份数的起始索引举例说明下 看下嘛表格该表格布局最大列数是 6 ,item0、item1、item2,每项占据2份数item3占据4份数,item4占据原创 2020-05-16 16:06:41 · 1451 阅读 · 0 评论 -
Android性能优化-apk瘦身
背景随着业务的发展app体积越来越大,由刚开始的几M到后来的几十M。APP越来越大会导致用户使用成本会上升,进而导致用户的流失等等。。。。压缩APP,减小app体积刻不容缓!!!随着Android studio 3.0 发布,也随之提供了 Analyser 来分析apkapk结构分析apk有lib、classes.dex、assets、resources.arsc、res等文件组成...原创 2020-04-24 16:25:41 · 280 阅读 · 0 评论 -
Android 8.0 Activity启动崩溃异常:"Only fullscreen opaque activities can request orientation"
今天测试突然提出 打开某某页面崩溃,怎么可能,我的代码怎么会有这么到的bug呢,抓紧找出信息如下崩溃机型:华为荣耀手机系统版本:Android8.0日志如下:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cloudy.linglingbang.test/com.cloudy.lingl...原创 2019-11-21 15:50:31 · 612 阅读 · 0 评论 -
大话单例模式
标题概念单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式基本实现懒汉模式这是最基本的单例模式,实现了懒加载,但是多线程不...原创 2019-10-26 11:35:52 · 154 阅读 · 0 评论 -
Git多个账户冲突问题解决
一台设备可能存在多个git账号,如何管理呢? 下面那两个git账号举例说明第一个账号 xxxxxx@qq.com(github.com ) 第一个账号 xxxxxx@163.com(git.oschina.net)步骤一、 设置Git的user name和email: $ git config --global user.name "xuhaiyan" $ g原创 2016-11-09 18:33:46 · 2465 阅读 · 0 评论 -
Android Carsh:android.view.WindowManager$BadTokenException
分析:当打开Dialog或者PopupWindow时,所依附的View不存在或是token令牌不存在,简单来说就是所在的窗体(Activity)已关闭出现时机:在Activity 中开定时打开Dialog,然后关闭Activity;解决方法:在打开Dialog或者PopupWindow,首先检测Activity是否已关闭/*** 检查Activity是否已关闭*/public s...原创 2019-07-04 09:45:20 · 1025 阅读 · 0 评论 -
工作中遇到的问题
1、包装类和基本类型介绍https://blog.youkuaiyun.com/mylike_45/article/details/90772777总结https://blog.youkuaiyun.com/mylike_45/article/details/907788812、equals 的使用https://blog.youkuaiyun.com/mylike_45/article/details/89467369...原创 2019-07-03 20:03:31 · 146 阅读 · 0 评论 -
java 包装类和基本类使用区别-注意点
包装类和基本类介绍举个栗子class Student{ private int age; private String name; private Long birthday; private long createTime;}可以看到成员age和createTime使用的事基本类型,而birthday使用的事包装类。有什么区别呢?1、默认值?2、占用空间?3、还是其他不...原创 2019-06-04 17:12:28 · 409 阅读 · 0 评论 -
java 基本类型和包装类
基本类型和包装类基本类型包装类所占字节intInteger4字节longLong8字节floatFloat4字节doubleDouble8字节byteByte1字节shortShort2字节booleanBoolean1字节chrCharacter2字节至于为什么 Java 中 char 无论中...转载 2019-06-04 16:39:10 · 209 阅读 · 0 评论 -
Android Studio 调试技巧
设置断点开启调试模式快捷键:mac: control+D或者重点来了。。。重点来了条件断点int value = 0;for(int i=0;i<100;i++){ value+=i;}Log.i("tag","value = " + value);若i 的值为50,我们查看下value的值。 如何做呢?我们以上代码不做修改。常规方法:一步步循环,知道i值为...原创 2019-04-29 11:44:00 · 419 阅读 · 0 评论 -
transient 关键字
transient 中文意思是短暂的,临时的。Java中transient关键字的作用,简单地说,就是让某些被修饰的成员属性变量不被序列化,原创 2019-04-24 16:20:37 · 227 阅读 · 0 评论 -
Toast WindowManager$BadTokenException
Toast 作为 Android 常用的控件之一,突然在友盟统计上发现Toast报错了,那就需要麻溜的解决了。复现 Toast.makeText(getContext(), "我的Toast", Toast.LENGTH_SHORT).show(); try { Thread.sleep(5_000); } catch (Interr...转载 2019-04-28 16:31:34 · 807 阅读 · 0 评论 -
android 在加代码混淆时 ,搜集到的错误(一)
在混淆包含SlidingMenu, gson 的代码时,可能会报以下错误:can't find superclass or interface com.google.android.maps.MapActivity...如果还使用到了gson来序列化或者反序列化json,程序还会抛出NullPointerException,这是因为代码被混淆后,成员变量以及getter、s原创 2015-08-10 14:23:31 · 309 阅读 · 0 评论 -
android RecyclerView 使用完全解析 介绍(二)
RecyclerView 是Google推出的一个强大的View ,可以替代ListView ,GridView ,瀑布流等等组件。RecyclerView是用来显示大量数据的容器,并通过有限数量的子View,来提高滚动时的性能。与ListView不同,RecyclerView 不再负责布局,而是专注于布局复用。布局主要通过 LayoutManager来管理,目前提供了3种常用的布局管理:Lin原创 2015-12-09 18:03:43 · 410 阅读 · 0 评论 -
android RecyclerView 使用完全解析 替代ListView(一)
RecyclerView是什么?RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。在开发RecyclerView时充分考虑了扩展性,因此用它可以创建想到的任何种类的的布局。但在使用上也稍微有些不便。这就是Android——要完成一件事情总不是那么容易。如果使用R原创 2015-12-09 17:20:27 · 689 阅读 · 0 评论 -
JAVA — 强引用 软引用 弱引用 虚引用 介绍
一、概述在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。 但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食之无味,弃之转载 2015-12-10 10:08:52 · 289 阅读 · 0 评论 -
Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件转载 2015-12-18 10:47:52 · 337 阅读 · 0 评论 -
录制视频的大Bug (IOS 不能播放)
录制视频 部分代码示例: mMediaRecorder = new MediaRecorder(); mMediaRecorder.reset(); if (mCamera != null) mMediaRecorder.setCamera(mCamera); mMediaRecorder.setOnErrorListener原创 2016-01-13 14:23:53 · 1445 阅读 · 0 评论 -
android 横竖屏切换属性和播放视频全屏切换
转 http://blog.youkuaiyun.com/u013895206/article/details/44035091最近在做平板项目,需要用到横屏切换,现在把属性贴出来方便以后查看。通常我们的应用只会设计成横屏或者竖屏,锁定横屏或竖屏的方法是在manifest.xml文件中设定属性android:screenOrientation为”landscape”或”portrait”:<activity转载 2016-03-30 18:32:15 · 1321 阅读 · 0 评论 -
java算法 -- zip解压,压缩
文件压缩解压算法原创 2016-05-11 15:18:39 · 597 阅读 · 0 评论 -
android 底部导航栏
欢迎使用Markdown编辑器写博客这几天Android开发遇到布局问题,布局被手机底部的导航栏(虚拟键)挡住啦一部分。 在网上查啦一些资料,确定这几种方法能够实现。布局中也要添加android:fitsSystemWindows="true"1、在Activity onCreate方法中添加 :////透明导航栏,就是下面三个虚拟按钮getWindow().addFlags(WindowMan原创 2016-10-12 15:57:09 · 682 阅读 · 0 评论 -
Android 7.0 安装Apk时报错FileUriExposedException 解决
安装Apk时报错FileUriExposedException 1、AndroidManifest.xml写入<provider android:name="android.support.v4.content.FileProvider" android:authorities="你的包名.fileprovider" android原创 2017-05-18 18:26:33 · 684 阅读 · 0 评论 -
Android 7.0 FileUriExposedException 解决
从Android 7.0开始,一个应用提供自身文件给其它应用使用时,如果给出一个file://格式的URI的话,应用会抛出FileUriExposedException。这是由于谷歌认为目标app可能不具有文件权限,会造成潜在的问题。所以让这一行为快速失败。详见这里。这里讨论两种解决方式。1 FileProvider方式 这是谷歌官方推荐的解决方案https://github.com/honjane原创 2017-05-18 18:34:18 · 308 阅读 · 0 评论 -
Android Studio离线安装gradle(亲测可用)
最近也是在试着熟悉使用android studio,毕竟是以后安卓的主流开发平台,早晚都是要用的。但是面对谷歌这个版本帝,每次AS每次更新之后又是要更新gradle,总是因为我们伟大的天朝的墙实在是太厚,提示各种错误。研究了很久发现了这个方法,希望可以帮助遇到同样问题的朋友(当然有VPN的同学就当我没说)!o(∩_∩)o 第一步:下载需要的gradle,根据提示的错误来,我上次提示的是不能下载gr原创 2017-11-07 15:35:35 · 1763 阅读 · 0 评论 -
Android 8.0 app内应用更新失败
Android 8.0 app内应用更新最近公司app更新上线测试,发现在android8.0 更新失败,已提示更新点击升级是直接页面闪一下导致更新失败。经排查,更新包已下载完成,通过Intent,调用apk文件路径,进行自动安装的,但是8.0 下载完文件,并没有调用成功。 已知原因如下: 在 Android 8.0 中,安装未知应用权限提高了安装未知来源应用时的安全性。此权限与其他运...原创 2018-03-28 10:50:54 · 1014 阅读 · 0 评论 -
ListView单条item刷新
ListView单条item刷新在使用listView显示很多数据时当有一条数据发送改变需要刷新某条数据时,一般会调用Adapter.notifyDataSetChanged()来进行刷新。 但会造成体验不好,尤其是下载列表会高频率调动Adapter.notifyDataSetChanged()会造成UI绘制资源的浪费进而影响性能。 代码模块Activitypublic class...原创 2018-07-12 23:15:30 · 280 阅读 · 0 评论 -
java enum 枚举比较 == or equals ??
问题public static enum MessageDirection { SEND(1), RECEIVE(2);}在使用枚举比较时,使用了equals来比较两个枚举值if (data.getMessageDirection().equals(Message.MessageDirection.SEND)) { ...}结果空指针了java.lang....原创 2019-04-23 10:38:41 · 13900 阅读 · 1 评论 -
Android 学习笔记1 Edittext 限制输入
Edittext 在很多地方用到,比如说登陆界面、计算器、拨号器等等。在这些地方需要我们限制它的输入内容格式比如只可以输入纯数字或者字母。 Edittext android:inputType来设置文本的类型,让输入法选择合适的软键盘的.android:digits="0123456789." 用来限定输入的字符android:numeric="integer"原创 2015-04-06 17:26:40 · 373 阅读 · 0 评论