- 博客(29)
- 收藏
- 关注
原创 android向U盘中拷贝文件成功后立刻断开,文件0字节
用OutputStream写入Sd上的文件,写完后会有打印提示,如果立即把机器断电,再打开被写入的文件,发现成了0字节。一直怀疑是写在缓存,没同步到磁盘,于是在write()后加了个flush(),结果还是0字节。是因OutputStream是字节流,其写入操作不会用到缓存。所以flush根本没用。但OutputStream又找不到一个类似linux中的sync()方法,所幸在论坛找到一同样问题的帖子,终于找到解决方法:用OutputStream的子类FileOutputStream打开文件,Fil
2020-08-05 15:43:41
2967
原创 使用addr2line对JNI的Crash堆栈信息分析
目的:使用addr2line对库中的崩溃定位到具体的代码行步骤:1.获取崩溃产生的记录堆栈信息的墓碑文件tombstone*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***Build fingerprint: 'alps/full_nb6797_6c_m/nb6797_6c_m:6.0/MRA58K/1583238338:user/test-keys'Revision: '0'ABI: 'arm'pid: 19
2020-05-25 20:02:29
683
转载 【Android 10】深色主题
我们一直以来使用的操作系统都是以浅色主题为主的,这种主题模式在白天或者是光线充足的情况下使用起来没有任何问题,可是在夜晚灯光关闭的情况下使用就会显得非常刺眼。于是,许多应用程序为了能够让用户在光线昏暗的环境下更加舒适地使用,会在应用内部提供一个一键切换夜间模式的按钮。当用户开启了夜间模式,就会将应用程序的整体色调都调整成更加适合于夜间浏览的颜色。不过,这种由应用程序自发实现夜间模式的方式很难做到全局统一,即有些应用可能支持夜间模式,有些应用却不支持。而且重复操作的问题也很让人头疼,比如说我在一个应用
2020-05-13 14:56:50
834
原创 api 与 implementation 的区别
gradle 从 3.4 开始,compile 已经被废弃了,取而代之的是 api | implementation,俩个我们都可以用,但是肯定还是有区别的:api - 本地依赖时依赖不隔离,但是编译慢 implementation - 本地依赖时依赖隔离,编译快我们从 依赖隔离 | 编译速度 2个角度来看 api | implementation依赖隔离实际开始中我们有2种依赖方...
2019-12-17 14:46:43
692
原创 Android aar打包和jar打包
jar包和aar包的区别jar:内含“assets",“com”,“META-INF”,里面只包含class文件和清单文件,不包含资源文件,如res下的文件。aar:class以及res下的所有的资源文件。必定包含AndroidManifest.xml,classes.jar,res,R.txt文件,可能还包含些其他文件。/assets/ (可选) /libs/*.jar (可选...
2019-12-17 14:39:12
749
原创 代码混淆和aar包遇到的坑
1.aar包是不嵌套aar包的,所以当我的项目中引用了别人的aar,而我又需要向其他人提供我的aar的时候,就出现了aar嵌套,而aar是不包含aar包的,所以解决这个问题:①我给客户提供我的aar和我引用的别人的aar。②将别人的aar换成jar包的形式,即可以打进我的aar中提供给客户。2.我是将别人给我的aar让他换成了jar的形式,然后放入我的工程中,混淆打成一个aar包提...
2019-12-17 10:04:58
2441
原创 Android studio依赖包aar的使用
aar和jar包的区别:aar可以包含资源文件,例如drawable、layout等。所以可以把资源文件一起放入aar包中复用,在弄一些会使用到这些资源文件的,如自定义控件的时候就会十分方便。将module配置为aar文件:首先要把module配置为library,即在module中的gradle设置:由apply plugin: 'com.android.applic...
2019-12-10 20:33:16
326
原创 thread导致的内存泄漏实例——为什么使用静态内部类避免内存泄漏
背景:有个数据库处理类,包含一个thread负责对数据库进行写入(耗时操作)。该thread在某个fragment中会被重新初始化并开始。 private void updateBookShelf() { Globals.getInstance().setBookShelves(bookShelves); if (Globa...
2019-10-21 14:33:10
971
原创 android webview js交互
最近做的项目中有android和h5交互部分 总结如下一、android调用h5方法在Android端主要使用WebView来进行网页的加载,设置属性// 获取WebSetting对象WebSettings webSettings = webview.getSettings();// 设置支持javascriptwebSettings.setJavaScriptEnabled...
2019-08-29 19:48:31
165
原创 FragmentStatePagerAdapter和FragmentPagerAdapter的区别
对于销毁一个fragmentFragmentStatePagerAdapter:public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { Fragment fragment = (Fragment)object; if (thi...
2019-08-01 17:04:43
262
原创 http get和post的区别
什么是http? get、post常见的区别 get和post不同点的误区 附录常见的http状态码1.什么是http这里只是简单概述一下,更多详情可以参见:基于tcp/ip、一种网络应用层协议、超文本传输协议HyperText Transfer Protocol 工作方式:客户端请求服务端应答的模式 快速:无状态连接,灵活:可以传输任意对象,对象类型由Conten...
2019-07-27 15:45:52
143
原创 Fragment not attached to a context
源码:/** * Return the {@link Context} this fragment is currently associated with. * * @throws IllegalStateException if not currently associated with a context. * @see #getContext(...
2019-07-01 15:12:03
8109
1
原创 设置图片缩放方法失效 解决办法设置android:scaleType属性
使用matrix.setScale()方法设置缩放失效,界面没有效果 Matrix matrix = new Matrix(); PointF midPoint = new PointF(); midPoint.x = tmp.imageView.getWidth()/2 ; ...
2019-03-21 15:37:50
3325
原创 使用有效负荷payloads优化RecyclView性能 避免不变部分闪屏
如图示的相册功能,需求是通过实体按键上下左右选择或者点击选择的时候,被选中的item显示蓝色外边框。实现后发现被选中item和取消选中的item有闪屏现象。解决办法,重写onBindViewHolder(ViewHolder holder, int position, List<Object> payloads):@Override public vo...
2019-03-15 15:07:16
882
原创 Exifinterface图片扩展信息EXIF
一、ExifInterface类给我们了一个实用的方法publicbyte[]getThumbnail()这个方法可以生成一个缩略图,返回一个字节数组,我们通过以前讲到的通过OutputStream将其保存成一个JPG文件。当然如果要是显示到一个Drawable对象,可以通过decodeByteArray(byte[],int,int)类来解析这个字节数组,不过具体生成的分辨率还不清楚。 ...
2019-02-27 17:21:14
988
原创 getMeasuredHeight获取控件高度为0
获取控件高度的时候我们用到getMeasuredHeigh()t和getHeight(),他们两个的区别就是getHeight获取的是屏幕内的高度,而getMeasuredHeigh()获取到的是控件实际的高度,即使是在屏幕外边。 在开发项目的时候遇到了一个情况是使用PopupWindow做了一个弹窗,弹窗的底部和根视图中某一个控件的顶部对齐。 用到了showAsDropDown(...
2019-02-21 14:45:01
2762
1
原创 Android媒体库
现象:连接电脑查看设备sd卡内的新拍的图片找不到 Android媒体库:Android的媒体库其实就是一个数据库文件,当系统启动完成、SD卡插拔或者接收到“Intent.ACTION_MEDIA_SCANNER_SCAN_FILE”广播消息时,系统会扫描文件系统中的数据,将新增和删除的文件信息更新到这个数据库中,这样当其它程序获取文件系统中的文件信息时,直接操作这个数据库就行了,不用去...
2019-01-25 11:07:26
920
原创 倒序ArrayList中的方法
Collections.reverse(controlCarList); 源码:/** * Reverses the order of the elements in the specified list.<p> * * This method runs in linear time. * * @param list ...
2019-01-10 16:59:09
5368
原创 多渠道打包应用加载不同的SDK
遇到一个项目,需求场景是使用了OCR识别,由于暂未确定采购方案,因此对三种不同的厂家的SDK均集成进项目,打包出三种不同的APK。 一、首先多渠道打包部分:manifest:设置了一个key为THIRD_SDK的占位符<meta-data android:name="THIRD_SDK" android:value="${THIRD_SDK}"&...
2019-01-03 15:33:26
779
原创 安卓按下Home键至手机桌面后,重新点开应用时无法进入退出时的页面
现象发生的情况是安装完成之后点击打开运行APP,从MainActivity进入AActivity后,按home回到主界面,再点击图标把APP切回前台运行的话发现打开的是MainActivity不是AActivity。但是如果安装的时候点击完成,再打开APP就不会这样,具体原因未知,可能是系统的bug吧。 解决办法是在MainActivity中加上:if ((getIntent()...
2018-12-28 16:29:55
768
原创 使用高德地图自定义marker、infowindow
先上效果图 首先在oncreate的时候开启定位:/** * 开启定位*/ private void location() { //初始化定位 AMapLocationClient mLocationClient; mLocationClient = new AMapLocationClient(getApp...
2018-12-27 10:41:40
2551
2
原创 对List中的对象的模糊查询
将string和 controlPersonList中的Id和Name作比较。Matcher类的matches()方法是全字段匹配,find()方法是模糊搜搜匹配@Override public void doSearch(String string, List<ControlPerson> controlPersonList, List<ControlCar&...
2018-12-20 14:45:55
1682
原创 在fragment中和在adapter中startActivityForResult
我的项目结构是一个activity中包含两个fragment,每个fragment中有button去开启新活动,也有recycleview里的button去开启。 实现了以后发现fragmen中的button开启的回调在fragment中的onActivityResult中接收,recycleview的在activity中接收的。让我很奇怪。 那么来比较一下集中开启的方式:...
2018-12-19 10:54:31
698
原创 focusable和focusableInTouchMode的区别
在项目中在某种条件下需要把一个文本编辑框设置成TimePicker选择器的模式。所以首先要设置edittext不可编辑。我就把它设置成不可获取焦点的形式,这时发现有两种方案可行,即focusable和focusableInTouchMode。区别:1)、普通模式focusable 请求普通获取焦点的能力(可以理解为通过物理键盘),在xml中的配置是android:...
2018-12-17 11:52:28
5171
原创 recyclerView更新list使用notifyDataSetChanged后没有反应的坑
先看adapter类public class ControlPersonAdapter extends RecyclerView.Adapter<ControlPersonAdapter.ViewHolder> { private List<ControlPerson> controlPerson; private Context context;...
2018-12-13 14:17:51
1831
原创 RecyclerView使用
1.添加布局fragment布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:backg...
2018-12-11 14:47:08
189
原创 Android getResources().getColor() 过时 替代方法
getColor方法在Android 6.0即API 23中 已经过时,替代方法为:ContextCompat.getColor(context, R.color.black); holder.command.setTextColor(ContextCompat.getColor(context,R.color.car_normal)); ...
2018-12-11 13:35:28
433
转载 【转载】RecycleView使用详解
原文链接:https://blog.youkuaiyun.com/u012721519/article/details/54692366 一、RecycleView简要介绍 RecycleView是support-v7包中的新组件,是一个强大的滑动组件。相比于ListView和GridView具有很多让开发者喜欢的优点,如:数据绑定,Item的创建和View的回收复用机制等。但Recycle...
2018-12-10 16:50:48
322
原创 使用FragmentTransaction对多个fragment进行切换
通过record_car和record_person的点击实现下边的fragment的切换。过程:1.获取fragmentManager2.获取FragmentTransaction3.add/remove/hide/show等方法的使用,本例中使用的是add进去后,再通过使用show和hide进行切换,没有使用remove。 代码实例:public class R...
2018-12-10 14:57:30
3253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人