- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 现有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
226
原创 useReducer dispatch实现类似react-thunk功能
问题:useReducer生成的dispatch无法dispatch函数解决:使用useThunkReducer代替useReducerconst wrapperDispatch = (dispatch, getState) => { return (action) => { if (typeof action === 'function') { action(wrapperDispatch(dispatch, getState), getState); }
2020-09-15 14:33:27
364
原创 RecyclerView插入、删除导致position错乱
问题:使用notifyItemInserted(position)和notifyItemRemoved(position)对RecyclerView进行添加、删除操作时,如果连续操作,后面的position就会错乱。解决方法:统一使用notifyDataSetChanged()方法刷新;结合notifyItemRangeChanged(int positionStart, intitemCount)刷新,其中positionStart是添加或删除位置索引,itemCount是数据总数。示例:
2020-08-28 19:51:13
773
原创 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
2179
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
456
原创 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
195
原创 使用责任链模式解决异步嵌套问题
Chain: 用于表示一个链条对象(1)定义一个数组,用于保存这条链所有的interceptor;(2)定义一个param,用于保存该链式调用所需的参数;(3)包含一个proceed()方法,从第一个interceptor开始,循环调用interceptor的intercept()方法;(4)定义一个proceedNext(Interceptor interceptor),接收一个int...
2019-10-15 17:18:12
702
原创 android引入别的目录模块
在setting.gradle指定该模块所在的目录:project(':printerModule').projectDir = new File("../../", "commonLib/PrinterModule/printerModule")然后在setting.gradle引入该模块:include ':printerModule'在项目的build.gradle中依赖该模块:imp...
2019-05-23 11:25:11
1557
原创 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
1101
原创 Java7 HashMap源码阅读总结
put()方法:计算key的hash值通过hash值找到对用的下标如果该下标不为空,检查是否有重复的 key 存在,如果有则覆盖(hash相同,key相同==、equals)不存在重复的 key,将此 entry 添加到数组中(1) 检查扩容:已经达到了阈值 && 位置已经有元素a. 扩容:新建一个数组,长度是原来的2倍b. 转移:rehash把原数组元素放入到新数...
2019-04-19 17:50:02
314
原创 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
1071
原创 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
13857
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
410
原创 activity被回收后,点击Tab无法切换fragment
1、原因:当activity在后台并且内存不足时,系统会把activity给回收掉,但也会保存部分(不是全部)信息用于下次页面恢复。这样会导致下次进入页面后布局或数据错乱,并且点击底部Tab无法切换fragment。2、解决方法:(1)方法一:注释掉super.onSaveInstanceState(outState),这样被回收时就不会保存部分数据了,下次进来可以相当于首次进来一样,全部重新...
2018-09-27 17:49:49
554
原创 FragmentPagerAdapter无法刷新问题
1、原因:在FragmentPagerAdapter的instantiateItem()方法里,他会先去FragmentManager里面去查找有没有相关的fragment如果有就直接使用如果没有才会触发fragmentpageadapter的getItem()方法获取一个fragment。所以你更新fragments集合是没有作用的。 @Override public Obje...
2018-08-28 19:53:09
1120
1
原创 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
177
原创 一个简易的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
211
原创 LoopView实现滚轮选择器
GitHub:https://github.com/juwuguo1988/LoopViewProject核心类是com.example.administrator.loopviewapplication.loopview包里的7个类只要给LoopView设置数据即可使用
2018-01-23 16:36:17
630
原创 SmartRefreshLayout实现下拉刷新上拉加载
GitHub:https://github.com/scwang90/SmartRefreshLayout禁止上拉加载:refreshLayout.setEnableLoadmore(false); 使上拉加载具有弹性效果:refreshLayout.setEnableAutoLoadmore(false); 禁止越界拖动:refreshLayout.setEnableOverScroll
2018-01-19 13:53:11
3272
1
原创 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
221
原创 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
453
原创 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
603
java注解解析
2017-10-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人