Android成长记录

1.广播接受者 BroadcastReceiver

有俩种注册方式

1.传统注册方式,可以在清单文件中注册,也可以通过代码动态注册,广播分为有序广播,和无序广播

2.通过LocalBroadcastManager发送广播,

  1. 发送的广播只会在当前APP中传播,不会泄露给其它APP,确保了数据传输的安全。

  2. 其它APP的广播无法发送到本APP中,不用担心安全漏洞被其它APP所利用。

  3. 比系统全局广播更加高效。

它们俩个的区别

LocalBroadcastManager和BroadcastReceiver 的根本区别,BroadcastReceiver 的通信是走 Binder 机制,所以可以跨进程通信,LocalBroadcastManager 核心实现实际还是 Handler,因为是 Handler 实现的应用内的通信,这就可以理解上述所说的三个优点,本APP通信、不受非本APP广播影响、效率高,并且无法跨进程通信。

IntentService

使用了IntentService最起码有两个好处,一方面不需要自己去new Thread了;另一方面不需要考虑在什么时候关闭该Service了。

IntentService是一个基于Service的一个类,用来处理异步的请求。你可以通过startService(Intent)来提交请求,该Service会在需要的时候创建,当完成所有的任务以后自己关闭,且请求是在工作线程处理的。

主要就是继承IntentService         然后复写onHandleIntent方法,根据传入的intent来选择具体的操作

 @Override
    protected void onHandleIntent(Intent intent)
    {
        if (intent != null)
        {
            final String action = intent.getAction();
            if (ACTION_UPLOAD_IMG.equals(action))
            {
                final String path = intent.getStringExtra(EXTRA_IMG_PATH);
                handleUploadImg(path);
            }
        }
    }

在子线程中创建 Handler    and  创建子线程Handler

 new Thread(new Runnable() { //在子线程new Handler
        @Override
        public void run() {
            Looper.prepare();
            mHandler = new Handler(Looper.myLooper());
            Looper.loop();
        }
    }).start();
        HandlerThread handlerThread = new HandlerThread("HandlerThread"); // 创建子线程handler
        handlerThread.start();

        Handler mHandler = new Handler(handlerThread.getLooper()){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                Log.d("HandlerThreadActivity.class","uiThread2------"+Thread.currentThread());//子线程
            }
        };

        Log.d("HandlerThreadActivity.class","uiThread1------"+Thread.currentThread());//主线程
        mHandler.sendEmptyMessage(1);

Handler机制的角色和职责

    1  MessageQueue  消息队列
        存储消息的容器,可以向其中添加、取出消息。遵循先进先出的原则。
    2  Handler 
        负责将消息发向消息容器即MessageQueue中。
    3  Looper 轮训器
        通过调用自身的loop方法,不断的从消息队列当中取出消息并发送给target(即handler)处理消息。当消息队列当中没有轮训消息时,它就处于堵塞状态。

Android 中 handler机制工作原理
handler 机制想要起作用有三个步骤
1.创建Looper2.创建Handler 3.调用Looper的loop方法,

Android中 遵循这三点 默认这个应用程序都是通过ActivityThread类启动,  这个类中负责创建所有Activity,并回调每个Activity生命周期方法,在这个类中会默认创建一个main线程(主线程)
创建Looper和调用loop方法的工作android sdk 已经做好,所以平时使用的时候只用创建handler发送消息就可以了

ActivityTherad类 main入口中会 调用 Looper.prepareMainLooper();  然后在里边有个 prepare(false)在这里边会去用TheradLocal.set方法(new Looper) 
ThreadLocal在我们的线程当中用于去保存一些变量信息,默认情况下,创建一个与线程相关的一个对象,是通过threadLocal存储的它有set和get方法 set是把变量设置到TheradLocal当中,get是获取出来因为当前线程是主

线程所以默认ThreadLocal是没有储存然后就会去newLooper
Looper对象初始化的时候就会去创建MessageQuene,
在这当中去创建looper的时候会默认创建MessageQuene,所以android自动创建了主线程Looper和MessageQuene();
handle和MessageQuene联系在一起是因为初始化handler的时候有个Looper.myLooper();在这个方法中会返回一个ThreadLocal.get();默认情况下android已经创建了主线程Looper对象并存储在ThreadLocal中,所以此处返回的
就是主线程的Looper对象,所以当在Activity中创建handler的时候,它就和消息队列关联起来了


总结在主线程中我们不用去创建Looper是因为 已经创建好了

重定向

就是俩次请求request 第一次客户段请求 A ,然后服务端响应,并response(响应)回来,告诉我应该去B,

重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失

请求转发是服务器内部把对一个request/response的处理权,移交给另外一个 
对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。
 传输的信息不会丢失。




一、宝宝成长记录系统介绍       孩子是一个家庭的宝贝,宝贝的成长只有一次。你知道宝宝长大后,你送给宝宝最好的礼物是什么吗?那就是为你的宝宝制作一套完整的成长记录!你知道你的宝宝长大后最爱听的故事是什么吗?那就是给你的宝宝讲述小时侯的故事!       宝宝成长记录系统,全面记录宝宝成长历程,使孩子长大以后能和你一起从这里找到童年时美好的回忆。收录父母的关爱,留给可爱宝贝一生值得珍藏的美好回忆!   二、软件功能       1、基础信息管理:包括宝宝的出生信息、主要社会关系、出生照片、出生足印管理,屏幕截图和视频在线拍照功能。       2、成长日记管理:记录宝宝成长信息、生活趣事、学习情况。集成了屏幕截图和视频在线拍照功能。       3、健康信息管理:记录宝宝的疾病情况、诊治医生、就诊医院。       4、计划免疫管理:自动生成宝宝的疫苗应种时间,方便查看已接种疫苗和未接种疫苗情况,并对近期应接种疫苗报警。       5、照片资料管理:照片说明、照片多窗口浏览,集成了屏幕截图和视频在线拍照功能。       6、宝宝视频管理:管理宝宝的重要视频,集成了视频在线录制功能。       7、原创作品管理:原创作品说明、原创作品多窗口浏览,集成了屏幕截图和视频在线拍照功能。       8、自动备份和恢复数据库:随时随地备份或恢复数据库,保障了系统的安全。       9、照片的处理:提供了单张一寸照片的生成和多张照片统一处理功能,并且实现了屏幕直接截取照片功能。       10、视频拍录:此功能为在线采集图片和录制视频提供了方便(摄像头需正常运行)。       11大事提醒:对日常生活中的重要日期以及重要事件,按项目的不同,进行了直观的颜色标识       12、其它功能:  权限设置功能、口令修改功能、记事本和计算器功能、界面上宝宝名称、软件名称、背景图片的自定义功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值