
Android
文章平均质量分 58
CJ_Geek
这个作者很懒,什么都没留下…
展开
-
Android-Room使用和迁移
Android Room原创 2022-11-12 12:53:02 · 1625 阅读 · 1 评论 -
FFmpeg命令
FFmpeg命令原创 2022-08-12 15:33:25 · 790 阅读 · 0 评论 -
手撸BlockCanary核心部分
class BlockActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_block) initDelayHander() initPrinter() val b原创 2021-04-09 10:00:32 · 139 阅读 · 0 评论 -
Android 跨进程通信-AIDL实战
需求描述进程A调起第三方进程B进行第三方登录 – 实现双向通信代码(进程A)目录结构LoginActivity.javapublic class LoginActivity extends AppCompatActivity { private ILoginInterface iLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate原创 2021-04-08 13:27:36 · 221 阅读 · 0 评论 -
Android MAT内存泄露分析
工具准备MAT下载地址https://www.eclipse.org/downloads/download.php注意:Android系统版本太低会导致分析内存泄露信息拿不到步骤使用Profile工具查看是否有内存泄露的存在将第一步生成的hprof文件,使用hprof-conv工具转换成标准文件,便于MAT工具分析hprof-conv -z [infile][outfile]步骤2命令生成的文件导入MAT工具下图为去除除了强引用以外的引用,便于分析下图显示的就是引用原创 2020-12-07 18:19:35 · 405 阅读 · 0 评论 -
Android之Token
token在创建ActivityRecord的时候一起被创建,他是一个IBinder对象,实现了接口IApplicationToken。token创建后会发送到WMS,在WMS中封装成WindowToken,并存在一个HashMap<IBinder,WindowToken>。token会随着ActivityRecord被发送到本地进程,ActivityThread根据AMS的指令执行Activity启动逻辑。Activity启动的过程中会创建PhoneWindow和对应的...转载 2020-12-03 20:21:46 · 1046 阅读 · 0 评论 -
手写findViewById,其实就是个递归
public class FindView { public double mId; public FindView[] mChildren; public FindView findViewById(double id) { if (mId == id) { return this; } if (mChildren != null) { for (int i = 0; i <原创 2020-11-20 20:12:34 · 189 阅读 · 0 评论 -
MVP框架搭建
MVP学过Android的至少应该略知一二,废话不说,直接上代码View层public abstract class BaseView<P extends BasePresenter, CONTRACT> extends AppCompatActivity { protected P p; @Override protected void onCreat...原创 2020-03-24 17:09:46 · 317 阅读 · 1 评论 -
Android 8.0应用图标的适配
转自:https://blog.youkuaiyun.com/guolin_blog/article/details/79417483原创 2020-01-19 20:40:19 · 195 阅读 · 0 评论 -
JNI-引用
引用分类JNI引用的分类即 jobject的分类在JNI中属于jobject类型的有:1.局部引用 本地方法栈内有效2.全局引用 虚拟机全局生效 不会被GC回收3.弱全局引用 虚拟机全局生效GC时被回收局部引用下面方法的返回值都是属于局部引用 1.方法的jobject参数 2.FindClass 3.GetObjectClass 4.GetObjectField 5....原创 2019-12-03 21:13:59 · 178 阅读 · 0 评论 -
JNI-数据类型
JNI系统类型JNIEnv指的是当前线程上下文 并不是虚拟机上下文基本数据类型1.java类型预jni类型的对应关系2. jni类型与C语言对应关系,注意jstring其实是jobject类型,而jobject对应C语言的void*所以不能直接对jstring通过字符串的方式使用3. JNI中如何使用jstring引用类型1.JNI内部描述解释:type[] 表示数组类型...原创 2019-12-03 17:50:54 · 209 阅读 · 0 评论 -
CMake初识
1.什么是CMake1.在Android Studio2.2及以上,构建原生库的默认工具是CMake。2.CMake是一个跨平台的构建工具,可以用简单的语句来描述所有平台的安转(编译过程)。能够输出各种各样的makefile或者project文件。CMake并不直接构建初最终的软件,而是产生其他工具的脚本,然后再依据这个工具的构建方式使用。3.CMake是一个比make更高级的编译配置工具............原创 2019-12-02 17:52:02 · 330 阅读 · 0 评论 -
Android View随手指移动
package com.lcj.test;import android.content.Context;import android.graphics.Rect;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;public class TouchVie...原创 2019-11-05 11:05:51 · 291 阅读 · 0 评论 -
Android 5.0之JobScheduler
背景在Android开发中,有时候我们需要在特定的时间点或者特定的条件下去执行一些后台任务。Jobscheduler是android在5.0上针对于降低功耗而提出来的一种策略方案,自 Android 5.0 发布以来,JobScheduler 已成为执行后台工作的首选方式,其工作方式有利于用户。使用方法1.创建要执行的任务并注册@TargetApi(Build.VERSION_CODES...原创 2019-07-19 12:39:07 · 206 阅读 · 0 评论 -
Android保活机制----账户同步
转载:https://blog.youkuaiyun.com/lyz_zyx/article/details/73571927转载 2019-07-23 15:58:26 · 1885 阅读 · 0 评论 -
未完成的RecyclerView复用原理分析
转载:https://www.jianshu.com/p/5f6151c1b6f8https://www.jianshu.com/p/efe81969f69dhttps://www.jianshu.com/p/504e87089589转载 2019-06-27 17:14:45 · 144 阅读 · 0 评论 -
FragmentTransaction的四个事务提交方法
不同之处解释如下图:参考:https://www.cnblogs.com/mfmdaoyou/p/7045243.html原创 2019-06-26 18:51:04 · 1342 阅读 · 0 评论 -
FragmentPagerAdapter与FragmentSaterPagerAdapter
转载:https://blog.youkuaiyun.com/chengkun_123/article/details/73694936https://www.cnblogs.com/nbls/p/7252307.html总结:FragmentPagerAdapter: attach() detach()FragmentStatePagerAdapter: add() remove()...转载 2019-06-26 17:16:07 · 755 阅读 · 1 评论 -
FragmentTransaction的方法如何影响到Fragment的生命周期
问题一直都不是明白FragmentTrasaction的add, remove, replace, hide, show, replace, attach, detach方法是如何影响到Fragment的生命周期的??????实验如下:add()2.remove()3.replace() 相当于remove后再add4.hide() 生命周期方法不会被回调5.show() 生...原创 2019-06-26 14:30:15 · 429 阅读 · 0 评论 -
App Link&Deep Link
转自:https://blog.youkuaiyun.com/u014626094/article/details/79501298转载 2019-05-31 13:40:18 · 1697 阅读 · 0 评论 -
ConstraintLayout约束布局
转载:https://blog.youkuaiyun.com/airsaid/article/details/79052011转载 2019-06-19 17:06:25 · 215 阅读 · 0 评论 -
Android5.0新增JobService与Service的区别
Service的启动,停止是由ActivityManagerService来维护的;而JobService是由JobSchedulerService来维护的。Service无需任何条件就可以启动;而JobService启动需要JobInfo指定条件来启动,没有条件启动会抛异常。Service中onStartCommand()返回START_STICKY可以告诉AMS在被停止后自动启动;而Jo...原创 2019-07-19 14:02:52 · 902 阅读 · 0 评论 -
Android8.0之后禁止在后台启动服务的解决方案
方案一将调用 startService启动Service 改为调用 startForegroundServiceif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { startForegroundService(intent);} else { startService(intent);}方案二使用Job...原创 2019-07-19 15:47:13 · 7662 阅读 · 0 评论 -
Android屏幕点亮和解锁
屏幕点亮:Intent.ACTION_SCREEN_ON屏幕解锁:Intent.ACTION_USER_PRESENT下面这篇文章的情况我没有尝试过,之后再尝试参考:https://blog.youkuaiyun.com/frained/article/details/80818482...原创 2019-07-24 12:20:51 · 1719 阅读 · 0 评论 -
View坐标详解(2)
View中scrollTo() scrollBy() getScrollX() getScrollY()// scrollTo与scrollBy滑动的都是view的内容public void scrollTo(int x, int y) { if (mScrollX != x || mScrollY != y) { int oldX = mScrollX;...原创 2018-03-25 00:12:23 · 153 阅读 · 0 评论 -
android 可折叠的TextView
效果图代码package com.lcj.expandtextview;import android.content.Context;import android.content.res.TypedArray;import android.text.DynamicLayout;import android.text.Layout;import android.text.Spann...原创 2019-09-25 11:06:55 · 505 阅读 · 0 评论 -
Android高度相关的获取
/** * 屏幕真实高度 * @return */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public int getRealMetrics() { WindowManager windowManager = (WindowManager) getSystemService(...原创 2019-09-16 17:18:54 · 202 阅读 · 0 评论 -
Android中获取View位置信息的函数
View.getLocalVisibleRect(Rect r)1.以View左上角为参考系, 获取到的r.left 为02.该方法可以用来判断View是否可见 return true: 全部可见或者部分可见 全部可见时,rect.left rect.top 都为0 return false: 全部不可见3. 用来判断View是否移出了屏幕外View.getGlobalVisibl...原创 2019-09-16 15:28:31 · 528 阅读 · 0 评论 -
值得收藏
转:https://blog.youkuaiyun.com/duxingerlai/article/details/89212517原创 2019-08-01 09:38:16 · 129 阅读 · 0 评论 -
Android多进程Application的onCreate执行多次
转自:https://blog.youkuaiyun.com/Kebiiii/article/details/77938008转载 2019-07-30 17:30:44 · 460 阅读 · 0 评论 -
Android8.0之Notification
转自:https://blog.youkuaiyun.com/guolin_blog/article/details/79854070原创 2019-07-25 12:37:10 · 94 阅读 · 0 评论 -
图片请求处理简单框架
图片请求处理框架图示代码实现1.Request的封装import android.content.Context;import android.widget.ImageView;import java.lang.ref.SoftReference;public class BitmapRequest { private Context mContext; //...原创 2019-07-30 10:31:31 · 172 阅读 · 0 评论 -
android下拉刷新
下拉刷新package com.lcj.demo1.view;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.w...原创 2019-04-20 15:07:21 · 456 阅读 · 0 评论 -
Android利用注解实现“注入”
基础概念依赖倒置原则(DIP Dependency Inverse Principle)高层组件(抽象)不应该依赖于低层组件(细节),两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 其核心思想就是基于接口编程控制反转(IOC Inverse of Control)将控制权交向上层组件转移。控制反转是DIP的具体实现方式。依赖注入(DI Dependency ...原创 2019-04-23 10:07:31 · 803 阅读 · 0 评论 -
RecyclerView中万能Adapter
参看网上写的万能模板,求改进package com.lcj.demo1.adapter;import android.support.v7.widget.RecyclerView;import android.util.SparseArray;import android.view.LayoutInflater;import android.view.View;import andr...转载 2019-04-20 21:49:51 · 282 阅读 · 0 评论 -
使用HandlerThread实现一个定时器进行定时刷新界面
代码实现如下 定时器类–TimerUtilspublic class TimerUtils implements Handler.Callback, Runnable { private static final int MSG_SEND_SIGNAL = 0; private Handler mUiHandler; private HandlerThread...原创 2018-04-13 14:59:10 · 2012 阅读 · 0 评论 -
BackStackRecord(继承自FragmentTransaction) 中commit()与commitAllowingStateLoss()的区别
@Override public int commit() { return commitInternal(false); } @Override public int commitAllowingStateLoss() { return commitInternal(true); }从源代码来看,它们调用了同一...原创 2018-04-17 16:40:27 · 628 阅读 · 0 评论 -
Fragment详解
FragmentTranscation中的重要函数// 向Activity中添加一个Fragmenttransaction.add(R.id.fl_content, secondFragment,FragmentSecond.TAG);// 从Activity中移除一个Fragment,如果移除的Fragment没有添加到回退栈,这个Fragment将会销毁transaction.r...原创 2018-04-11 16:25:02 · 173 阅读 · 0 评论 -
ScrolleView中嵌套ListView时,listview只加载一条的问题
解决方法1:public void initListViewBaseChildren(ListView lv, BaseAdapter adapter) { int totalHeight = 0; for (int i = 0; i < adapter.getCount(); i++) { View listItem = adapter....原创 2018-04-04 00:04:38 · 134 阅读 · 0 评论 -
ViewPager中数据不刷新的问题
PagerAdapter刷新分析 notifyDataSetChanged() public void notifyDataSetChanged() { synchronized (this) { if (mViewPagerObserver != null) { mViewPagerObserver.onChang...原创 2018-04-10 16:01:32 · 1837 阅读 · 0 评论