2021-11-13《Android第一行代码》 第十三章 Android进阶 阅读笔记(连载中。。。)

2021-11-13《Android第一行代码》 第十三章 Android进阶 阅读笔记(连载中。。。),第1张

2021-11-13《Android第一行代码》 第十三章 Android进阶 阅读笔记(连载中。。。)

笔者说:笔者写的这系列读书笔记,目的就是为了方便伸手党,不用看书,可以快速知道书中的一些思想,所以,文章中一般不会写太多代码,都是笔者的一些理解,或书中作者代码的描述。没错,我也是个极简主义者,哈哈。(别看东西少,我真没糊弄你们,哈哈)
最后:笔者是个萌新啊,大佬看到错误多多指正,加油

《Android第一行代码》 第十三章 阅读笔记 第一节 全局获取Context的技巧

什么是Context:

翻译过来就是环境的意思。

一个Activity是一个Context对象,一个Service也是一个Context对象。

我的理解:Context我们可以看到它中间的text,其实也是一个内容。就像一个土地公,既代表这块土地,也是这块土地的管理者。

我觉得安卓,比较重要,或者说最直观的理解,就是“分发”这两个字。

1.1快速获得Context的技巧

Android提供了一个Application的类,每当应用程序启动的时候,系统就会自动的将这个类进行初始化,而我们可以定制一个自己的Application类,以便于管理程序一些全局的状态信息,比如全局Context.

public class MyApplication extends Application{
    private static Context context;
    
    @Override
    public void onCreate(){
        context = getApplicationContext();
        
        //在自定义的application中调用LitePal
        LitePalApplication.initialize(context);
    }
    
    public static Context getContext(){
        return context;
    }
}

接下来我们需要告知系统,当程序启动的时候应该初始化MyApplication类,而不是默认的Application类。

这里直接在application标签下指定即可。(记得写完整包名)。

第二节 Intent传值技巧 Intent传递对象的两种实现方式

Serializable & Parcelable (两种序列化方式,在实体类中实现接口)

Serializable 方式

emm书上传递逻辑太简单,就是new一个实体类然后set值,我这里就跳过了。

我写下接收方法。

//Person就是实体类
Person person = (Person) getIntent().getSerializableExtra("KEY");
Parcelable方式
public class Person implements Parcelable{
    private String name;
    private int age;
    ...
        
    @Override
    public int describeContents(){
        return 0;
    }
    
    @Override
    public void writeToParcel(Parcel dest,int flags){
        dest.writeString(name);
        dest.writeInt(age);
    }
    
    public static final Parcelable.Creator CREATOR = new Parcelable.Creator(){
        
        @Override
        public Person createFromParcel(Parcel source){
            Person person = new Person();
            person.name = source.readString();
            person.age = source.readInt();
            return person;
        }
        
        @Override
        public Person[] newArray(int size){
            return new Person[size];
        }
    }
}

接收代码

//Person就是实体类
Person person = (Person) getIntent().getParcelableExtra("KEY");

对比Serializable ,Parcelable的逻辑复杂,但效率更高。

第三节 定制自己的log日志

书上写得没啥意思。。。

一看就会

有需要,可以百度,貌似更快,固定代码。

第四节 调试Android程序

重要的事情说三遍:

Debug 打断点!Debug 打断点!Debug 打断点!

然后按F8代码就会向下执行一行,可以观察数据变化。

第五节 创建定时任务 Timer类

别用这个了,太耗费性能了,扛不住啊。

Alarm类

代码的话,百度一大把,我这读书笔记就不敲了。。。

重点:Android 4.4开始,Alarm任务触发时间不准确(有延迟)

解决:使用AlarmManager的setExact()代替set()。

Doze模式

知道他是一种模式,为了,延长电池使用寿命。

进入这种模式,系统会对CPU、网络、Alarm等活动进行限制,从而达到目的。

第六节Lambda表达式

Lambda表达式本质:匿名方法

要使用,得再build.gradle里面加配置

关键词:箭头函数、极简主义


本问没有描述书中的多窗口模式,因为太晚了,我要猝死了,明天再说吧。。。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5481340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存