随笔分类 - android 开发 优化
1
摘要:1.java反射机制主要提供了以下功能 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflecti
阅读全文
摘要:编译期:资源和代码的编译 运行时:资源和代码的加载 解决了以上2个关键问题,之后如何实现插件呢 分析android是如何编译的 1.aapt 资源编译依赖这个命令行 1)android.jar 2)引用一个已经存在的apk包作为依赖资源参与编译 资源编译中,对组件的类名、方法引用会导致运行期的反射调
阅读全文
摘要:http://my.oschina.net/zhibuji/blog/195097 主要解决: 在android中,多个进程对同一个sharedpreference进行修改,总会有一个进程获取到的结果不是实时修改后的结果。 SharedPreference作为android五大存储(网络,数据库,文
阅读全文
摘要:从Activity类的startActivity()方法开始,这个方法会调用Activity类中的public void startActivityForResult()方法startActivityForResult()方法会调用Instrumentation类中的public ActivityR...
阅读全文
摘要:硬件威胁:ARM的架构设计软件威胁TEE是中等安全级别可信执行环境(TEE)是Global Platform(GP)提出的概念。针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户,还包括服务提供者,移动运营商,以及芯片厂商。TEE是与设备上的Rich OS(通常是Android等)并...
阅读全文
摘要:在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。Java语言对内存管理做了自己的优化,这就是垃圾回收机制。Java的几乎所有内存对象都是在堆...
阅读全文
摘要:内存泄漏及解决方法1.系统崩溃前的一些现象:每次垃圾回收的时间越来越长,由之前的10ms延长到50ms左右,FullGC的时间也有之前的0.5s延长到4、5sFullGC的次数越来越多,最频繁时隔不到1分钟就进行一次FullGC年老代的内存越来越大并且每次FullGC后年老代没有内存被释放之后系统会...
阅读全文
摘要:1.内存泄露的本质是什么呢就是长生命周期的对象引用短生命周期的对象,长生命周期总是持有段生命周期的引用造成了对短生命周期对象的不能回收2.静态集合类引起内存泄露因为静态对象跟应用程序的生命周期一样Static Vector v = new Vector(10); for (int i = 1; i ...
阅读全文
摘要:JVM的内存区域划分 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢? 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。...
阅读全文
摘要:程序员在使用 JNI 时应当认识到 JNI 编程中如下的几点弊端,扬长避短,才可以写出更加完善、高性能的代码:从 Java 环境到 native code 的上下文切换耗时、低效。JNI 编程,如果操作不当,可能引起 Java 虚拟机的崩溃。JNI 编程,如果操作不当,可能引起内存泄漏。1.jni内...
阅读全文
摘要:通常是在资源文件下创建attrs.xml1.attrs.xml 根标签要是resources,定义的变量要有个名字,declare-styleable name="button">,这里定义名称为button。在这个名称里,可以有多个自定义...
阅读全文
摘要:1.looper /** Initialize the current thread as a looper. * This gives you a chance to create handlers that then reference * this looper, befo...
阅读全文
摘要:handler:绑定到一个线程上,一个线程可以有多个handlerlooper:线程跟looper是一一对应的,所以looper不能被调用两次否则会抛出异常messge:handler利用message来携带消息messagQueue:用来状态message,一个looper对应一个消息队列如何来判...
阅读全文
摘要:静态内部类只能访问外部类的静态成员,因为非静态成员必须依附于某个具体的对象,而静态内部类不需要要静态内部类可以直接实例化,不需要绑定到外部类上再去实例化handler出现泄漏的两个原因:1)message没有清楚干净2)handler持有的主线程的COntext实例解决方案:1) message:在...
阅读全文
摘要:1.GC root:1、 Class:由系统的类加载器加载的类对象2、 Static Fields3、 Thread:活着的线程4、 Stack Local: java方法的局部变量或参数5、 JNI Local: JNI方法中的局部引用6、 JNI Global: 全局的JNI引用7、 Monit...
阅读全文
摘要:public class MyActivity extends Activity{ private MyManager mMyManager = null; /* (non-Javadoc) * @see android.app.Activity#onCreate(android...
阅读全文
摘要:对象都是有生命周期的,对象的生命周期有的是进程级别的,有的是Activity所在的生命周期,随Activity消亡;有的是Service所在的生命周期,随Service消亡。很多情况下判断对象是否合理存在的一个很重要的理由就是它实际的生命周期是否符合它本来的生命周期。很多Memory Leak的发生...
阅读全文
摘要:1、Android 进程管理&内存Android主要应用在嵌入式设备当中,而嵌入式设备由于一些众所周知的条件限制,通常都不会有很高的配置,特别是内存是比较有限的。如果我们编写的代 码当中有太多的对内存使用不当的地方,难免会使得我们的设备运行缓慢,甚至是死机。为了能够使得Android应用程序安全且快...
阅读全文
摘要:刚入门的童鞋肯能都会有一个疑问,Java不是有虚拟机了么,内存会自动化管理,我们就不必要手动的释放资源了,反正系统会给我们完成。其实Java中没有指针的概念,但是指针的使用方式依然存在,一味的依赖系统的gc,很容易就造成了内存的浪费。Java基于垃圾回收的内存机制Java的内存管理机制会自动回收无用...
阅读全文
摘要:1.当系统内存不足时,系统将激活内存回收过程。为了不因内存回收影响用户体验(如杀死当前的活动进程),Android 基于进程中运行的组件及其状态规定了默认的五个回收优先级:IMPORTANCE_FOREGROUND:IMPORTANCE_VISIBLE:IMPORTANCE_SERVICE:IMPO...
阅读全文
1

浙公网安备 33010602011771号