摘要: java的线程是不允许启动两次的,如果启动两次会被认为是编程错误,而引发异常 synchronized: 局部变量是不会被修改的,而全局变量则很容易就被修改了,而你却还不知道。 (实战发现,有时候先加,有时候先减) 除了ThreadLocal和局部变量安全以外,静态和实例变量都是不安全的 静态变量: 阅读全文
posted @ 2019-11-16 09:17 小#安 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 5.1 用构造器确保初始化 构造器是一种特殊类型的方法,因为他没有返回值,与返回值为void明显不同。 5.2 方法重载 相同词可被理解成不同含义:重载 构造器必须使用重载(名字相同,但所传入的参数类型或个数不同) 小转大:::如果传入的类型小于方法中声明的形式参数类型,实际数据类型就会被提升。(若 阅读全文
posted @ 2019-11-16 09:17 小#安 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 1.Java线程有优先级 :1~10 static int MAX_PRIORITY:线程可以具有的最高优先级,取值为10。 static int MIN_PRIORITY:线程可以具有的最低优先级,取值为1。 static int NORM_PRIORITY:分配给线程的默认优先级,取值为5。 使 阅读全文
posted @ 2019-11-16 09:17 小#安 阅读(116) 评论(0) 推荐(0) 编辑
摘要: onBindViewHolder: 绑定数据到ViewHoldergetItemCount:获取总的条目数onCreateViewHolder:创建ViewHoldergetItemViewType():获取item对应的类型getItemId(int position): 返回项目的稳定ID po 阅读全文
posted @ 2019-11-16 09:16 小#安 阅读(447) 评论(0) 推荐(0) 编辑
摘要: notifyDataSetChanged() 调用此方法后,仅刷新屏幕以内的item,当下次滑动让屏幕外item进来,则再执行onBindViewHolder()进行刷新 notifyItemChanged(int position) 仅更新指定的position的item notifyItemRa 阅读全文
posted @ 2019-11-16 09:16 小#安 阅读(322) 评论(0) 推荐(0) 编辑
摘要: paint: 关于画笔基本属性,属于在onDraw(Canvas canvas)中配置,因此,每次都会继承view,并继承view的构造器,在 构造器中 把画笔配置以方法的形式添加进去。 void setColor(Color.RED) 画笔色 void setStyle(Paint.Style.S 阅读全文
posted @ 2019-11-16 09:15 小#安 阅读(149) 评论(0) 推荐(0) 编辑
摘要: view 与 ViewGroup绘制流程基本相同,在ViewGroup中不仅要绘制自己,还需绘制其中的子控件,而view只需绘制自己。 view绘制流程:测量,布局,绘制 onMeasure() : 测量当前控件的大小,为正式布局提供建议 (仅是建议,用不用要看onLayout() 函数) onLa 阅读全文
posted @ 2019-11-16 09:15 小#安 阅读(479) 评论(0) 推荐(0) 编辑
摘要: SurfaceView 的优点 使用双缓冲技术 自带画布,支持在子线程中更新画布内容 View 和 SurfaceView 各自使用场景 界面需要被动更新:使用View 。 画面更新是依赖于onTouch 来完成的,所以可以直接使用 invalidate() 函数。这种情况下,两次onTouch() 阅读全文
posted @ 2019-11-16 09:15 小#安 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 画布背景设置: void drawColor(int Color) void drawARGB(int a, int r, int g, int b) void drawRBG(int r, int b, int g) 画直线: void drawLine(float startX, float s 阅读全文
posted @ 2019-11-16 09:14 小#安 阅读(181) 评论(0) 推荐(0) 编辑
摘要: postdelayed方法:延迟加载计时器。 保留两位小数 关于dialogFragment中的一些细节问题: 1.关于view中控件绑定初始化,必须在onViewCreated中初始化 2.关于宽高问题:xml文件中的布局每一个都设置top,因此高度已经固定。仅需在dialogfragment文件 阅读全文
posted @ 2019-11-16 09:14 小#安 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 避免 static Activity activity; 这样的代码,或在销毁时置为null 单例模式中Singleton的getInstance()方法时传入的context尽量传入context.getApplication(因为单例的生命周期为应用生命周期) 避免 static Views ; 阅读全文
posted @ 2019-11-16 09:13 小#安 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 强引用(StrongReference):JVM宁可抛出OOM,也不会让GC回收具有强引用的对象 生命周期:JVM停止的时候才会终止 软引用(SoftReference):只有在内存空间不足时,才会被回收的对象 生命周期:内存不足时终止 弱引用(WeakReference):在GC时,一旦发现了只具 阅读全文
posted @ 2019-11-16 09:13 小#安 阅读(115) 评论(0) 推荐(0) 编辑
摘要: subscription.add:subscription通过add进行分组,可以给当前subscription添加子subscription,当subscription被取消订阅之后,他的子subscription均被取消订阅 zip:使用一个函数组合多个Observable发射的数据集合,然后再 阅读全文
posted @ 2019-11-16 09:12 小#安 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 非静态内部类导致内存泄漏主要原因:::App可能会因为大量的内存泄漏导致内存耗尽,引发Crash,如果内存耗尽,App会由于内存空间不足,出现频繁的GC,每一次GC都是一个耗时阻塞操作,会造成设备卡顿。 非静态内部类中创建了一个静态实例,导致该实例的生命周期和应用ClassLoader级别,又因为该 阅读全文
posted @ 2019-11-16 09:12 小#安 阅读(3005) 评论(1) 推荐(1) 编辑
摘要: 1.静态分析工具-Lint 检查内存泄漏 Android Studio 自带的工具,使用方式 Analyze -》Inspect Code 然后选择想要扫面的区域 2.LeakCanary工具 3.Android Monitor 内存溢出和内存泄漏的区别 内存溢出 out of memory,是指程 阅读全文
posted @ 2019-11-16 09:11 小#安 阅读(135) 评论(0) 推荐(0) 编辑
摘要: java垃圾回收器,开发者无需特意管理内存分配,降低了应用由于局部故障导致崩溃,同时防止未释放的内存把堆栈挤爆的可能,所以写出的代码更为安全。 但是,在java中仍存在很多容易导致内存泄漏的逻辑可能。如果不小心,则很容易浪费掉未释放的内存,最终导致内存用光的错误抛出OOM 内存泄漏 一般内存泄漏(t 阅读全文
posted @ 2019-11-16 09:11 小#安 阅读(778) 评论(0) 推荐(0) 编辑
摘要: 1.ConstraintLayout 约束布局 app:layout_constraintTop_toBottomOf :"@id/控件id" 使此控件在 控件id对应控件 之下 权重:app:layout_constraintHorizontal_weight = "2" 2.RelativeLa 阅读全文
posted @ 2019-11-16 09:10 小#安 阅读(1607) 评论(0) 推荐(0) 编辑
摘要: url加载方式:webView.loadUrl("http://139.196.35.30:8080/OkHttpTest/apppackage/test.html"); webViewClient: webViewClient主要帮助webView处理各种通知,请求事件 webViewClient 阅读全文
posted @ 2019-11-16 09:10 小#安 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 一个进程可以有多个线程,一个线程可以有多个协程,但某一时刻 只能有一个协程在运行,多个协程分享该线程分配到的计算机资源 优点: 操作系统切换线程,会产生一定的消耗,而协程 则是工作于线程之上, 协程可以由程序自己来控制,无需操作系统来进行调度(这样大大降低了开销) 场景:开启10万个协程执行hell 阅读全文
posted @ 2019-11-16 09:10 小#安 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 异常允许 允许我们强制程序停止运行,并告诉我们出现了什么问题 强制程序处理问题,并返回到稳定状态() 异常可能离异常被抛出的地方很远,也可能会跨越方法调用栈的许多层次。 通常::异常对象中仅有的信息就是异常类型,除此之外无其它内容 异常处理程序:try{}catch{} try{}后可以有多个cat 阅读全文
posted @ 2019-11-16 09:09 小#安 阅读(75) 评论(0) 推荐(0) 编辑