![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
itobot
这个作者很懒,什么都没留下…
展开
-
IO流粘包\分包处理器(分隔符方案)
用于处理读取TCP/IP或串口等IO流分包/粘包问题原创 2022-07-22 14:15:26 · 120 阅读 · 0 评论 -
现有Android项目集成ReactNative
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import com.facebook.react.ReactActivity;import com.facebook.react.ReactInstanceManager;imp原创 2021-08-25 23:46:18 · 185 阅读 · 0 评论 -
RecyclerView插入、删除导致position错乱
问题:使用notifyItemInserted(position)和notifyItemRemoved(position)对RecyclerView进行添加、删除操作时,如果连续操作,后面的position就会错乱。解决方法:统一使用notifyDataSetChanged()方法刷新;结合notifyItemRangeChanged(int positionStart, intitemCount)刷新,其中positionStart是添加或删除位置索引,itemCount是数据总数。示例:原创 2020-08-28 19:51:13 · 688 阅读 · 0 评论 -
RecyclerView最后一行显示不全
RecyclerView高度使用wrap_content时最后一行显示不全,需在RecyclerView包裹一层布局,并确定外层布局的高度;或者分配剩余空间;如果父布局使用ConstraintLayout,则确定顶部和底部定位,并且高度设为0dp。这样就可以正常显示。<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="原创 2020-08-28 13:26:58 · 1933 阅读 · 3 评论 -
Rn开发过程遇到的坑
1、文字不居中:height和lineHeight要保持一致。2、ios运行报Native module cannot be null.错误,注释./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js文件的invariant(nativeModule, 'Native module cannot be null.');3、组件浮动可设置position属性,有absolute和relative两种。absolute原创 2020-07-16 13:26:06 · 388 阅读 · 0 评论 -
okhttp流程分析
异步流程:1)enqueue()加入队列,先加入等待队列;2)promoteAndExecute(),从等待队列删除,加入到运行队列;3)executorService.execute(this),运行AyncCall(Runable对象)的run()方法,间接执行execute()方法;4)execute()方法会调用getResponseWithInterceptorChain()方法,并真正开始执行请求相关操作;5)返回Response后,调用finished()方法,把当前cal原创 2020-06-01 23:17:04 · 153 阅读 · 0 评论 -
使用责任链模式解决异步嵌套问题
Chain: 用于表示一个链条对象(1)定义一个数组,用于保存这条链所有的interceptor;(2)定义一个param,用于保存该链式调用所需的参数;(3)包含一个proceed()方法,从第一个interceptor开始,循环调用interceptor的intercept()方法;(4)定义一个proceedNext(Interceptor interceptor),接收一个int...原创 2019-10-15 17:18:12 · 642 阅读 · 0 评论 -
android引入别的目录模块
在setting.gradle指定该模块所在的目录:project(':printerModule').projectDir = new File("../../", "commonLib/PrinterModule/printerModule")然后在setting.gradle引入该模块:include ':printerModule'在项目的build.gradle中依赖该模块:imp...原创 2019-05-23 11:25:11 · 1486 阅读 · 0 评论 -
Android Ble蓝牙开发内存泄漏
记录2个Android Ble蓝牙开发容易导致内存泄漏的地方:蓝牙扫描当BluetoothAdapter.LeScanCallback最为内部类时要定义成static,如果回调内部需要用到activity的context,要使用弱引用包裹起来。参考:It leaks when I startLeScan in onCreate and stopLeScan in onDestroy...原创 2019-05-08 13:08:58 · 1010 阅读 · 0 评论 -
Java7 HashMap源码阅读总结
put()方法:计算key的hash值通过hash值找到对用的下标如果该下标不为空,检查是否有重复的 key 存在,如果有则覆盖(hash相同,key相同==、equals)不存在重复的 key,将此 entry 添加到数组中(1) 检查扩容:已经达到了阈值 && 位置已经有元素a. 扩容:新建一个数组,长度是原来的2倍b. 转移:rehash把原数组元素放入到新数...原创 2019-04-19 17:50:02 · 281 阅读 · 0 评论 -
android 方法卡顿检测
一、使用1.定义两个类:BlockDetector.java、LogMonitor.java。2.在Application中执行初始化方法。二、原理1.主线程所有的操作也是通过handler来执行的,所以只要监测每个msg执行的时间,就能定位出哪个方法造成卡顿。2.在Loop.java的loop()方法中,每次执行msg.target.dispatchMessage(msg)前后都会分别...原创 2019-03-31 16:24:54 · 960 阅读 · 0 评论 -
okhttp3上传图片
1.okhttp上传文件步骤public class ImageUpload{ //1.创建对应的MediaType private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); private final OkHttpClient client = new OkHttpClient...原创 2019-01-01 23:20:21 · 13666 阅读 · 2 评论 -
一个简单的左滑删除控件
1、java代码package com.example.administrator.swipelayouttest;import android.content.Context;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.MotionEve...原创 2018-10-05 12:07:34 · 377 阅读 · 0 评论 -
android视图拖动
/** * v.layout(l, t, r, b); * 移动Window里面的View */private View.OnTouchListener followTouch = new View.OnTouchListener() { int startX; int startY; int dx; int dy; @Override publ原创 2018-01-02 10:54:05 · 423 阅读 · 0 评论 -
LoopView实现滚轮选择器
GitHub:https://github.com/juwuguo1988/LoopViewProject核心类是com.example.administrator.loopviewapplication.loopview包里的7个类只要给LoopView设置数据即可使用原创 2018-01-23 16:36:17 · 592 阅读 · 0 评论 -
recyclerview悬浮条效果
java代码:private class SuspensionOnScrollListener extends RecyclerView.OnScrollListener { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(re原创 2018-01-18 18:27:27 · 185 阅读 · 0 评论 -
SmartRefreshLayout实现下拉刷新上拉加载
GitHub:https://github.com/scwang90/SmartRefreshLayout禁止上拉加载:refreshLayout.setEnableLoadmore(false); 使上拉加载具有弹性效果:refreshLayout.setEnableAutoLoadmore(false); 禁止越界拖动:refreshLayout.setEnableOverScroll原创 2018-01-19 13:53:11 · 3158 阅读 · 1 评论 -
一个简易的MVP框架
创建两个接口:MvpView、MvpPresenter 一个类:MvpActivity(MvpFragment)1、MvpViewpublic interface MvpView {}2、MvpPresenter(泛型)public interface MvpPresenter<V extends MvpView> { /** * 添加View * @param vie原创 2018-03-13 18:31:55 · 180 阅读 · 0 评论 -
Android 数据库debug
依赖:debugCompile ‘com.amitshekhar.android:debug-db:1.0.0’ 浏览器:http://XXX.XXX.X.XXX:8080(例: http://192.168.2.10:8080) 如果不能显示:(adb forward tcp:8080 tcp:8080,http://127.0.0.1:8080)...原创 2018-03-27 21:21:30 · 136 阅读 · 0 评论 -
FragmentPagerAdapter无法刷新问题
1、原因:在FragmentPagerAdapter的instantiateItem()方法里,他会先去FragmentManager里面去查找有没有相关的fragment如果有就直接使用如果没有才会触发fragmentpageadapter的getItem()方法获取一个fragment。所以你更新fragments集合是没有作用的。 @Override public Obje...原创 2018-08-28 19:53:09 · 1039 阅读 · 1 评论 -
activity被回收后,点击Tab无法切换fragment
1、原因:当activity在后台并且内存不足时,系统会把activity给回收掉,但也会保存部分(不是全部)信息用于下次页面恢复。这样会导致下次进入页面后布局或数据错乱,并且点击底部Tab无法切换fragment。2、解决方法:(1)方法一:注释掉super.onSaveInstanceState(outState),这样被回收时就不会保存部分数据了,下次进来可以相当于首次进来一样,全部重新...原创 2018-09-27 17:49:49 · 512 阅读 · 0 评论 -
TextView 长度不够处理
1. 跑马灯:android:ellipsize="marquee"android:singleLine="true"textView.setSelected(true);2. 结尾省略号android:ellipsize="end"android:maxEms="10"android:maxLines="1"原创 2017-11-20 10:14:51 · 565 阅读 · 0 评论