摘要:背景 ams的流程梳理起来很有意思,各个版本还是有些差异,不过基本流程还是类似的。今天有空简单梳理了下安卓10 activitythread主线程开始,到启动application和activity(即主线程启动到application和activity的oncreate生命周期),后面有空再深入完
阅读全文
摘要:安卓中多线程梳理 一、HandlerThread梳理 (1)解决主线程耗时问题 (2)避免内存泄漏 二、IntentService梳理 三、线程池梳理 核心线程最大数量: 计算密集型=Ncpu+1,但是这种做法导致的多一个cpu上下文切换。 1、优点: (1)线程复用,减少内存开销 (2)限定最大并
阅读全文
摘要:eventBus使用和及源码初步梳理 一、eventbus简介 EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发。它简化了应用程序内各个组件、线程之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。 1.1 三个重要角
阅读全文
摘要:安卓中IO机制概要 一、basic IO和NIO (1)内核空间 内核:一套软件,操作系统用于支撑基础使用的功能程序 (2)数据读写的方案 内核空间对于IO的操作方案: 页:4K数据为一页, 一页数据是IO操作的基本单位 空间局部性原理:在常规操作下, 如果数据量较大的情况下可能会出现预占位4~16
阅读全文
摘要:安卓中并发总结 一、JMM内存模型和并发 JMM规定了内存主要划分为主内存和工作内存两种,内存模型示意如下: 1、缓存一致性 现在的手机通常有两个或者多个CPU,其中一些CPU还有多核。每个CPU在某一时刻都能运行一个线程,这就意味着,如果你的Java程序是多线程的,那么就有可能存在多个线程在同一时
阅读全文
摘要:一、运行时数据区 1、java程序的执行过程 2、虚拟机 3、jvm组成和架构示意 4、运行时数据区 二、对象分配过程完全解析 1、堆内存划分 2、java中GC机制 3、对象逃逸与代码优化 (1)对象逃逸 非逃逸:一个对象的作用域仅限于方法区域内部在使用的情况下; 非逃逸:一个对象的作用域仅限于方
阅读全文
摘要:安卓中handler的post(Runnable)用法总结及源码初探 背景 安卓中线程间通信过程,handler有很重要的应用,现对handler的post操作进行总结 一、handler的post(Runnable)用法 public class MainActivity extends AppC
阅读全文
摘要:背景 安卓开发中多线程间通信是比较常见的操作,现对常用的几种方式先进行一波简单的总结。 一、通过handler方式 Handler handler = new Handler() { @Override public void handleMessage(@NonNull Message msg)
阅读全文
摘要:今天碰到一个问题,就是手机上下了一个软件,想用他显示界面的一个标签,需要打开项目查看文件?? A: 你可以右键点击文件选择打开方式,然后选择用winrar打开 来查看文件中的内容。或者更改文件后缀名为.rar 然后解压 会得到一个文件夹,里面就是改程序的源代码。 这样获得源代码挺方便啦的。
阅读全文
摘要:Drodid4X安卓模拟器的SD卡是通过虚拟机的虚拟磁盘来实现的,不能在电脑中直接访问。那遇到需要从SD卡复制/存入数据的操作,比如把游戏数据包放到SD卡、游戏存档数据备份等操作。下面来看看海马玩模拟器共享文件夹功能的使用方法。 一、设置共享文件夹 1.点击左侧的设置图标,然后点击共享文件夹图标。<
阅读全文
摘要:Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,问了保证应用某些组件仍然可以工作而引入了Service这个概念,那么这里面要强调的是Service不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多时候不建议在Service中编写耗时的逻辑和
阅读全文
摘要:单例设计模式(例如:Application) 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。 (2) 在其内部产生该类的实例化对象,并
阅读全文
摘要:mvc是model,view,controller的缩写。 mvc包含三个部分:(逻辑,控制,展示分开) 模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。 视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输
阅读全文
摘要:Service:是安卓的四大组件之一, Service的开启方式有两种,分别是StartService,和BindService,这两种启动方式的区别是: StartService与Activity没有任何关系,只要开启以后,就一直活跃在后头, BindService与开启的activity有关联,
阅读全文
摘要:1)静态变量引起内存泄露(内存泄露多了就变成溢出) 在代码优化的过程中,我们需要对代码中的静态变量特别留意。静态变量是类相关的变量,它的生命周期是从这个类被声明,到这个类彻底被垃圾回收器回收才会被销毁。所以,一般情况下,静态变量从所在的类被使用开始就要一直占用着内存空间,直到程序退出。如果不注意,静
阅读全文
摘要:TCP (长链接)(管发管收,数据安全)传输控制协议,提供的是面向连接、可靠的字节流服务,传输数据前经过“三次握手”建立连接,保证数据传输的可靠性,但效率比较低。一般用于对于数据传输安全性较高的场合。 UDP (短连接,只管发,不管收,想聊天就是UDK,丢了几句聊天记录无所谓)用户数据报协议,是一个
阅读全文
摘要:(1). AsyncTask,其中doInBackground()和onPostExecute(Result)两个方法非常重要 doInBackground() 这个方法运行在后台线程中,主要负责执行那些很耗时的操作,如访问网络。该方法必须重写。(其实这个方法就是在子线程中做耗时操作,通过handl
阅读全文
摘要:在一般的Java Web程序开发中,我们通常使用localhost或者127.0.0.1来访问本机的Web服务,但是如果我们在Android模拟器中也采用同样的地址来访问,Android模拟器将无法正常访问到我们的服务,这是为什么呢? 我们可以这样来理解:Android的底层是Linux kerne
阅读全文
摘要:在启动另外一个Activity的时候,有两种方法,一种是直接使用startActivity,另外一种就是使用startActivityForResult。本文主要通过一个Demo来学习一下第二种。 startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入
阅读全文
摘要:对于字符串处理Android为我们提供了一个简单实用的TextUtils类,如果处理比较简单的内容不用去思考正则表达式不妨试试这个在android.text.TextUtils的类,主要的功能如下: 是否为空字符 boolean Android.text.TextUtils.isEmpty(Char
阅读全文