- 博客(239)
- 收藏
- 关注
原创 ReactNative入门
React基本用法:react与js不同的点在于 react使用的是虚拟DOM js是真实DOM作用:当有新的数据填充 可以复用之前的,而js需要整体重新渲染创建虚拟DOM还可以使用jsx语法直接声明:注意要用babel标签将jsx转化为js但是建议采用jsx直接声明 在对于多标签DOM时js的方法需要不停嵌套非常麻烦jsx语法规则。
2023-04-17 09:50:39
516
1
原创 Android的主线程可以一直存在的原因
线程是一个动态执行的过程,从产生到死亡包括五个状态:新建、就绪、运行、死亡和堵塞。只要线程没有执行完毕或者没有被其它线程杀死,线程就不会进入死亡状态。Android中的主线程一直存在是因为主线程中一直在监听消息(通过死循环looper.loop一直获取消息),从而使线程无法被执行完毕。问:这个死循环为什么不会导致,主线程阻塞或者几秒无响应发生ANR?这里就涉及到Linux pipe/epoll机制,简单说就是在主线程的MessageQueue没有消息时,便阻塞在loop的queue.next()中的na
2023-03-13 10:45:13
1117
原创 主线程可以一直存在的原因
这里就涉及到Linux pipe/epoll机制,简单说就是在主线程的MessageQueue没有消息时,便阻塞在loop的queue.next()中的nativePollOnce()方法里,此时主线程会释放CPU资源进入休眠状态,直到下个消息到达或者有事务发生,通过往pipe管道写端写入数据来唤醒主线程工作。只要线程没有执行完毕或者没有被其它线程杀死,线程就不会进入死亡状态。,可以同时监控多个描述符,当某个描述符就绪(读或写就绪),则立刻通知相应程序进行读或写操作,本质同步I/O,即读写是阻塞的。
2023-03-13 10:42:38
187
原创 debug时报anr错:Reason: Input dispatching timed out 解决办法
在排查问题对点击事件的监听debug时,突然遇到这种anr报错 大体意思是点击事件超过5s没有回应 系统报出anr错误并闪退,导致我无法debug查看问题。android Studio 输入下方命令行即可不闪退 正常debug操作。
2022-12-02 18:21:18
4971
原创 adb shell命令行
打checkDebug类型包 可以替换成release等其他类型 会在app\build\outputs\apk\路径下。
2022-09-05 16:20:03
622
原创 Activity跳转时会闪屏问题解决方案(或打开弹窗底层Activity移动问题)
问题发现途径:页面A需要跳一个透明背景的页面B 发现跳转过程A页面整体会向左移动 并后续会变成纯黑色如上所述问题有两个: 1. A页面移动 2 . A页面呈现黑色导致B的背景不是原A页面
2022-08-26 16:34:05
2089
原创 RecycleView原生滚动进度条ScrollBar
android:fadeScrollbars=”true”(默认参数)是在滑块不滚动时,隐藏。android:fadeScrollbars=”false”是在滑块不滚动时,不隐藏。insideOverlay:默认值,表示在padding区域内并且覆盖在view上。outsideOverlay:表示在padding区域外并且覆盖在view上。outsideInset:表示在padding区域外并且插入在view后面。insideInset:表示在padding区域内并且插入在view后面。...
2022-08-25 18:09:57
1036
原创 修改app or avtivity主题
然后再AndroidManifest.xml找到对应的Activity 新增theme属性。首先在values/themes.xml中 写一个透明的style。比如想写一个弹窗 背景是透明的。
2022-08-24 16:11:55
309
原创 工具类:展开收起文字
点击展开或文字后 文字全部显示 展开按钮变成收起按钮 点击文字或收起按钮则文字变为两行 显示展开。最多展示两行文字 超出末尾显示省略号 并且在第三行开头展示“展开”按钮。文字不超过两行正常显示 无展开按钮。...
2022-08-24 15:57:34
426
原创 <include>标签使用说明
比如你已经写了一个页面A 但是在另一个B页面也需要展示A页面 大致如下图。layout属性后面是对应的A布局的文件名。即可在B页面使用include。
2022-08-24 15:49:31
404
原创 实现View点击时与默认显示不同的背景颜色
在需要实现的View直接setBackground该xml。先实现一个xml 在这里声明点击态背景与默认背景。
2022-08-17 11:41:21
379
原创 FragmentTransaction replace与show hide实现Tab分页
常规的tab分页是通过Tablayout + ViewPager2实现但是Tablayout 继承 HorizontalScrollView 只能实现横向布局在垂直tab 并且需求简单的场景下 就可以使用FragmentTransaction左侧tab采用两个linearLayout实现 点击则可进行fragment切换...
2022-08-10 17:46:15
415
原创 自定义recycleView的删除&移动的动画
坏消息是内部没有能直接提供调用开始移动动画或删除动画的方法有的是runPendingAnimations()该方法内部设置了各个动画的执行实际我们重写这个方法几乎等同于需要重写整个类。但是recycleView默认的是删除动画执行完之后才去执行移动动画这种情况下思路1就无法达到预期只能重写SimpleItemAnimator了。简单的场景下思路1是可以达到预期效果的,但是个人在项目中遇到了另一个难题,ui给的动画需要在执行删除动画的同时下方列表要同时上移。...
2022-07-25 18:07:15
1598
原创 xml编写补间动画 PopupWindow实现出现退出的动画
alpha、scale、translate、rotate、set的xml属性及用法PopupWindow实现出场退场动画
2022-07-21 10:25:17
441
原创 kotlin快速上手
val + 变量名:final类型对象var + 变量名:普通对象声明并初始化:val + 变量名 = 类()val mLintPaint = Paint()定义变量时,可在类型后面加一个问号?,表示该变量是Nullable,不加表示该变量不可为null。如下:var s:String? = nullvar s2:String = “xxx” //如果该变量被赋值为null,则编译不通过声明数组:var long_array:LongArray = longArrayOf(1, 2, 3)var
2022-06-21 13:50:22
752
原创 Activity、view、window之间的关系
Activity是ui的框架 View是展示出来的视图 而view有多个 window主要是管理 View 的创建与删除,以及与 ViewRootImpl 的交互,将 Activity 与 View 解耦。1,如何理解Activity,View,Window三者之间的关系?先来个算是比较恰当的比喻来形容下它们的关系吧。Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图)LayoutInflater像剪刀,Xml配置像窗花图纸。1:Activity构造的时.
2022-04-17 23:07:25
3626
原创 Context的应用场景与总结
Context是Applycation、service、Activity的父类show a Dialog 方法需要依靠windows才能展现 而只有activity有windows
2022-04-17 22:39:49
167
原创 android常用的锁 AtomicInteger lock
AtomicInteger是一种乐观锁——非阻塞同步/** * Atomically increments by one the current value. * * @return the updated value */ public final int incrementAndGet() { for (;;) { int current = get(); int next = curren
2022-04-17 22:35:01
2608
原创 lopper ThreadLocal handler造成内存泄漏的原因
首先looper.prepare()方法会判断是否只有一个looper 如果有多个会报错 ,然后构建出一个looper怎么保证一个线程只持有一个looper?每个Thread对象持有一个ThreadLocalMap对象(很像hashMap) 再看上面sThreadLocal.set方法直接获取ThreadLocalMap对象 进行存放 key是线程 value是looper。这也解释了上面通过sThreadLocal.get()方法去进行是否looper已存在的判断。looper.loop方法
2022-04-05 15:29:05
2296
原创 View的绘制流程
View 绘制中主要流程分为measure,layout, draw 三个阶段。measure :根据父 view 传递的 MeasureSpec 进行计算大小 主要是宽高。layout :根据 measure 子 View 所得到的布局大小和布局参数(子布局相对于父布局的上下左右点坐标),将子View放在合适的位置上。draw :把 View 对象绘制到屏幕上。...
2022-04-03 21:24:05
97
原创 为什么不能在子线程中直接更新ui
首先在子线程中是可以直接更新ui的@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); init(); new Thread(new Runnable() { @Override public void run() {
2022-04-03 20:42:56
3932
原创 多仓库开发 拉取不同仓库分支的时间不一致 导致缺少相关代码的解决措施
基于最早创建的开发分支在本地创建其他仓库的分支 然后使用git push --set-upstream + 分支名的方式将本地分支push到远端 这样你所有的分支及都是基于最早分支拉取的 不会有编译问题
2022-03-29 15:09:12
129
原创 通过SystemClock限制短时间内重复触发事件
SystemClock:系统计时的,单位毫秒。 private long lastonclickTime=0;//全局变量 long time=SystemClock.uptimeMillis();//局部变量 if (time-lastonclickTime<=10000) { }else { lastonclickTime=time;
2022-03-24 14:25:15
116
原创 context.getApplicationContext()与context的差别
getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁
2022-03-22 20:16:20
375
原创 HorizontalScrollView横向滑动视图 & ViewFlipper翻转视图
HorizontalScrollView是FrameLayout的子类,这意味着你只能在它下面放置一个子控件,这个子控件可以包含很多数据内容。有可能这个子控件本身就是一个布局控件,可以包含非常多的其他用来展示数据的控件。这个布局控件一般使用的是一个水平布局的LinearLayout 。实际效果是一个可滑动的view 适用于频道切换下方选中标识(结合viewPager做频道切换效果)ViewFlipperViewFlipper是Android自带的一个多页面管理控件且可以自动播放!它和ViewPage
2022-03-10 14:48:39
2009
转载 git 生成patch和导入patch
git 生成patch和导入patch当有别人发你的patch文件时 使用 git apply 文件路径 导入patch文件
2022-02-18 17:31:41
939
原创 Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
安卓跳转失败 查日志SchemeU 显示Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.解决方法1. 如果使用intent跳转Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Conte
2022-01-12 20:28:05
2458
原创 运行时权限 案例——实现按键获取电话权限并拨打电话
运行时权限ContentProvider会使用到运行时权限的功能运行时权限是安卓6.0添加的功能 用于避免app厂商强迫用户开启其所要的权限 (不给权限就不让安装)比如说一款相机软件在运行时申请地理位置权限 就算我拒绝给这个权限 我仍然可以使用这个app的其他功能 而不是像之前一样不能安装并不是所有权限都需要在运行时申请 否则不停的授权也很麻烦 android将权限归成了两类 一类是普通权限 一类是危险权限 普通权限指哪些不会直接威胁到用户的安全和隐私的权限 系统会自动授权不需要用户手动操作 危险权
2021-11-15 15:52:05
2074
原创 安卓四大组件之一——内容提供器ContentProvider
ContentProvider主要用于在不同的应用程序之间实现数据共享的功能他提供了一套完整的机制 允许一个程序访问另一个程序中的数据 同时还能保证被访数据的安全性目前 使用ContentProvider是安卓实现跨程序共享数据的标准方式不同于前面说的文件存储这种全局可读写操作模式 ContentProvider可以选择只对哪一部分数据进行共享 从而保证我们程序中的隐藏数据不会有泄漏风险运行时权限ContentProvider会使用到运行时权限的功能运行时权限是安卓6.0添加的功能 用于避免ap
2021-11-12 19:30:21
2673
原创 android 懒加载 ——ViewStub
使用场景当一块布局 有时候不需要展现 有时候需要展现 或者根据不同场景需要展现不同样式通常的解决方案就是:就是把可能用到的View先写在布局里,再初始化其可见性都设为View.GONE,然后在代码中根据数据动态的更改它的可见性。虽然这样的实现,逻辑简单而且控制起来比较灵活;但是也存在一定的缺点耗费资源。因为即使把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,故而:(1)仍然会创建对象;(2)仍然会被实例化;(3)仍然会被设置属性从而导致耗费内
2021-11-02 16:31:48
1514
原创 SimpleDraweeView——Fresco简单的使用 更方便使用图片如任意方向的圆角 设置加载图 加载失败图片
Fresco中文说明:http://www.fresco-cn.org/Fresco项目GitHub地址:https://github.com/facebook/fresco简介:点击此处注意事项:在xml设置圆角有可能会不生效 此时在代码中声明能够生效问题所在: xml中的Fresco命名空间不对比如我使用xmlns:fresco="http://schemas.android.com/tools"则用的是工具类 读取不到导致圆角不生效 可以直接删除该工具类 或者将其设置为"http://sc
2021-10-27 15:36:15
405
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人