android中jni,内存优化,设计模式总结

studio使用jni步骤总结:
创建native方法
编译一下生成class文件
对应的class文件生成.h文件(也就是C语言的头文件)
在main文件夹下建立jni目录,然后将头文件拷贝到里面
在jni目录下建立c文件,并引入生成的头文件,然后实现头文件中的方法
在创建native方法的类中引入生成的so文件,然后调用即可

android内存优化:
1.activity中复写onTrimMemory方法,内存不足的情况下可以清空缓存的数据
2.使用android推荐的SparsArray等集合来代替Arraylist的使用
3.避免过多的创建对象,一个对象占内存大约500字节,每个对象占十几个字节,过多的创建会引起内存不足,在类中避免调用get和set方法(谷歌不推荐,这样效率很低)
4.对于bitmap来说,在系统堆栈中是以像素点来存储的,按照ARGB来编码,每个像素点占4个字节,这样算下来会占用很多内存,因此不要过多的加载bitmap
5.使用增强for循环来提高效率,尽量使用android封装好的api
6.有时候静态由于抽象,当我们只是要调用某个类中的方法是,可以将此方法声明成静态的,这样运行速度会提高15%-20%,也避免了对象的反复创建。
7.关于service,在应用中如果没有必要,不要一直保持service的开启状态,只要在需要的时候才开始服务,在任务结束的是时候将service停止。谷歌推荐的是使用IntenService,
因为InetenteService的会在任务完成后将服务停止。
8.对于依赖注入框架来说还是尽量不要使用,因为依赖注入会很耗时,而且在依赖注入的时候会建立很多不需要的对象,这些对象很长时间不会被销毁,很占我们的内存。最好的办法
就是写findviewById()方法。
9.关于java中的垃圾回收机制:不需要我们自己去调用,但是可以利用垃圾回收机制来检测我们的程序,在ddms中查看gc模块,监测手机内存的变化,反复运行程序,如果内存一直升高,
那么就内存泄漏了,这时候检验我们的代码即可
10.在拼接字符串的时候,尽量不要使用+号 ,这样会多创建对象。而且拼接的效率也很差。如果有这一需求,可以使用stirngbuffer来拼接
设计模式之
1.单例模式:此模式可以保证对象的唯一性,避免了
3。装饰者模式:这个模式是将某个类传递给装饰类后,在其内部做改变
4.组合模式:所谓组合模式就是将共同属性的加入集合中进行组合,然后在使用的时候,将集合遍历。
5.模板模式:定义一个算法的骨架,然后将一些步骤延迟到子类中,这样子类可以改变算法。说白了就是定义一个抽象类,然后子类继承抽象类,根据需要重写方法
6.builder模式。经典的builder模式重点在于抽象出对象创建的步骤,通过构造方法来减少get或set方法的使用,但是android中的builder模式是减少对象创建过程中构造函数的重载数量而使代码的可读性更加。
因为builder模式比较常用,但是总结的较少,下面就同我就通过代码来简单的做个总结

public class Person {

    private final String  name;
    private final  int age;
    private final  String telPhone;
    private final  String sex;

    //构造函数私有化
    private  Person(PersonBuilder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.telPhone = builder.telPhone;
        this.sex = builder.sex;
    }

    //person中只有get方法 
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getTelPhone() {
        return telPhone;
    }

    public String getSex() {
        return sex;
    }



    public static class PersonBuilder{
        private final String  name;
        private final  int age;
        private String telPhone;
        private String sex;
        //这是必填的项目
        public PersonBuilder(String name, int age) {
            this.name = name;
            this.age = age;
        }
        //通过builder对其他属性进行设置
        public  PersonBuilder telPhone(String telPhone){
            this.telPhone = telPhone;
            return this;
        }
        public  PersonBuilder sex(String sex){
            this.sex = sex;
            return this;
        }
        @Override
        public String toString() {
            return this.name+this.age+this.telPhone+this.sex;
        }
    }
}
以上就是android中常用的builder模式的简单应用,如有不足,欢迎指出。 

你可能感兴趣的:(android实用小知识)