- 博客(7)
- 收藏
- 关注
原创 Android模块化之间的跳转
在使用模块化的开发中,各个模块之间的跳转和正常跳转不一样,为了解决这个问题,我用了最高效的方法,让模块依赖模块,这样就可以调用另一个模块中的类和方法了 操作如下 点击AS中这个按钮 然后点击这个 点击一个模块,在点击上方加号 点击这个以后选择想依赖的另一个模块,操作完后,我们就可以正常用Intent进行跳转了 ...
2020-11-27 15:47:52
1323
1
原创 内存泄露OOM
在我们进行编程的时候,会遇到内存泄露的问题,以下我列举了几点和解决方案,希望对大家有用 1.Bitmap过大 解决办法: 二次采样:第一次采样 第一次采样我主要是想要获得图片的压缩比例,假如说我有一张图片是200200,那么我想把这张图片的缩略图显示在一个5050的ImageView上,那我的压缩比例应该为4,那么这个4应该怎么样来获得呢?这就是我们第一步的操作了,我先加载图片的边界到内存中,这个加载操作并不会耗费多少内存,加载到内存之后,我就可以获得这张图片的宽高参数,然后根据图片的宽高,再结合控件的宽高
2020-09-03 09:07:06
808
原创 Glide和Fresco
Fresco 优点: 图片存储在安卓系统的匿名内存, 而不是虚拟机的堆内存中 所以, 应用程序有更多的内存使用, 不会因为图片加载而导致 oom, 同时也减少垃圾回收器频繁调用回收 Bitmap 导致的界面卡顿, 性能更高. 渐进式加载图片, 支持图片从模糊到清晰加载 图片可以以任意的中心点显示在 ImageView, 而不仅仅是图片的中心. 图片改变大小也是在 native 进行的, 不是在虚拟机的堆内存, 同样减少 OOM 很好的支持 GIF 图片的显示 缺点: 框架较大, 影响 Apk 体积 使用较
2020-09-01 14:18:14
1123
原创 用自定义View实现选座功能
我们在安卓开发中安卓自带的控件满足不了我们的需求,因此我们就需要用到自定义View来满足我们的需求,在这里我要讲解的是自定义View实现选座功能,在安卓中一个会使用自定义View的人一定会开发出与众不同以及美观的项目 首先,我展示一下效果 以上主要就是我们需要创建一个我们自己的View继承自Viewgroup控件并实现onMeasure以及onDraw方法 具体的代码是这样的 public class SearView extends ViewGroup { private Context cont
2020-09-01 10:34:00
1945
1
原创 自定义弹框
我们如果想要实现这样的自定义弹框,需要怎么做呢,接下来就是教程 首先,我们需要创建一个类继承Dialog 下面就是代码 package com.bw.movie; import android.annotation.SuppressLint; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget..
2020-08-22 10:42:34
1514
1
原创 AsyncTask基本面试问题
AsyncTask内部也是Handler机制来完成的,只不过Android提供了线程池来执行相应的任务,因为线程池的大小问题,所以AsyncTask只应该用来执行耗时时间较短的任务。 比如Http请求,大规模的下载和数据库的更改不适用于AsyncTask,因为会导致线程池堵塞,没有线程来执行其他的任务,导致的情形是会发生AsyncTask根本执行不了的问题。 因为AsyncTask实际上是一个线程池,最大只支持个并发。如果有线程长时间占用,且没有空闲,则其他线程只能处于等待状态,会造成阻塞 ...
2020-08-19 14:24:00
386
原创 handler的源码解析以及面试相关问题
这里写自定义目录标题 Handler,Message,looper和MessageQueue构成了安卓的消息机制,handler创建后可以通过sendMessage将消息加入消息队列,然后looper不断的将消息从MessageQueue中取出来,回调到Hander的handleMessage方法,从而实现线程的通信。 从两种情况来说,第一在UI线程创建Handler,此时我们不需要手动开启looper,因为在应用启动时,在ActivityThread的main方法中就创建了一个当前主线程的looper,并
2020-08-14 17:21:09
1565
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人