activity

Android 常用开源框架源码解析 系列 (四)Glide

瘦欲@ 提交于 2020-01-29 04:02:58
一、定义 Glide 一个被google所推荐的图片加载库,作者是bumptech。对Android SDk 最低要求是 API 10 与之功能类似的是Square公司的picasso 二、基本概念 Model :数据来源 :Uri、本地文件、资源ID Data :加工数据 Resource :对原始数据进行解码,解码之后的资源 resource Resource decode :资源解码器 TransformedResource:转换资源 TranscodedResource:转码,将静态、Gif动态图进行格式转换以便能加载 Target :目标图片 三、整体流程 A:Model图片数据源 ———ModelLoader加载—>原始数据Data——Decoder解码——> Resource——Transform裁剪——>TransformResource——Transcode转码——>TranscodeResource——封装——>Target 四、源码 引入 :compile 'com.github.bumptech.glide:glide:3.7.0' 4.1、使用流程三步曲: Glide .with(“上下文context”) .load(“url”) .into(“显示的控件资源"); 4.2、常用加载图片的配置参数: public void LoadImage(View

Flutter Boost的router管理

一笑奈何 提交于 2020-01-28 09:52:27
环境 FlutterBoost介绍 咸鱼Flutter Boost介绍 Flutter Boost Github 混合开发环境搭建 原生Android集成Flutter混合开发 Flutter SDK版本: v1.9.1 Flutter Boost 版本: flutter_boost: ^0.1.63 FlutterBoost集成 FlutterBoost是以插件方式的引入到我们的native项目工程的。 混合工程 混合开发流程可以参考: 原生Android集成Flutter混合开发 Flutter module项目集成FlutterBoost 在flutter_boost_module项目的pubspec.yaml文件中添加依赖插件配置 dependencies: flutter: sdk: flutter flutter_boost: ^0.1.63 配置完成后下载依赖插件到本地 flutter packages get 在native原生项目中rebuild工程,即可引入flutter boost插件,引入flutter boost后的代码结构。其中的amap_base_map是引入了地图插件才显示的,如果没有引入地图插件则不会出现该文件。 在native的项目中,在app目录下的build.gradle中添加flutter_boost项目依赖 implementation

android App启动过程

▼魔方 西西 提交于 2020-01-28 02:58:31
本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理。不介绍具体源码,仅仅构建一个大体框架。 启动流程: ①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求; ②system_server进程接收到请求后,向zygote进程发送创建进程的请求; ③Zygote进程fork出新的子进程,即App进程; ④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求; ⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求; ⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息; ⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。 ⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。 上面的一些列步骤简单介绍了一个APP启动到主页面显示的过程

Android内存优化杂谈

≡放荡痞女 提交于 2020-01-27 05:43:50
Android内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作: 优化RAM,即降低运行时内存。这里的目的是防止程序发生OOM异常,以及降低程序由于内存过大被LMK机制杀死的概率。另一方面,不合理的内存使用会使GC大大增多,从而导致程序变卡。 优化ROM,即降低程序占ROM的体积。这里主要是为了降低程序占用的空间,防止由于ROM空间不足导致程序无法安装。 本文的着重点为第一点,总结概述降低应用运行内存的技巧。在这里我们不再细述PSS、USS等概念与Android应用的内存管理,如对这部分内容感兴趣,可自行阅读文末的参考文章。 内存泄露的检测与修改 内存泄露:简单来说对象由于编码错误或系统原因,仍然存在着对其直接或间接的引用,导致系统无法进行回收。内存泄露,容易留下逻辑隐患,同时增加了应用内存峰值与发生OOM的概率。它属于bug issue,是我们一定要修改的。 下面是造成内存泄露的一些常见原因,但是如何建立一套发现内存泄露、解决内存泄露的闭环方案,才是我们工作的重点。 一. 内存泄露的监控方案 Square的开源库leakcanry是一个非常不错的选择,它通过弱引用方式侦查Activity或对象的生命周期,若发现内存泄露自动dump Hprof文件,通过HAHA库得到泄露的最短路径,最后通过notification展示。 内存泄露判断与处理的流程如下图

Android客户端稳定性测试——Monkey

允我心安 提交于 2020-01-27 03:56:49
修改时间 修改内容 修改人 2016.6.20 创建 刘永志 2016.6.29 完成 刘永志 Monkey 简介: Android SDK 自带的命令行测试工具,向设备发送伪随机事件流,对应用程序进行进行稳定性测试。 Monkey 的优势与缺陷: 优势: 脱离Case的依赖 可封装自动化执行 可封装后作为客户端性能测试的驱动 缺陷: 完全随机,不可控 不支持IOS系统 Monkey 命令及参数: 基本语法如下: $ adb shell monkey [ options ] < event - count > 如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件: $ adb shell monkey - p your . package . name - v 500 一些常用的参数信息。 Category Option Description General --help Prints a simple usage guide. 获取帮助信息。 -v Each -v on the command line will increment the verbosity level. Level 0 (the default) provides little

Android调用相机,本地相册。

不羁岁月 提交于 2020-01-26 18:56:41
这两个应用操作本质上就是通过activity的action属性来调用相应的activity。 调用相机核心代码: Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //指向拍照activity的intent activity.startActivityForResult(camera, GMJValues.CAMERA); //camera为自己设置的request code 调用相册的核心代码: Intent picture = new Intent(Intent.ACTION_GET_CONTENT); picture.setType("image/*"); activity.startActivityForResult(picture, GMJValues.PICTURE); 第一句为启动指向显示文件的activity,第二句为设置显示的文件的路径。 其他类似的调用:    // 视频    Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT);    innerIntent.setType(contentType); //String VIDEO_UNSPECIFIED = "video/*";    Intent

Android中的WeakReference 弱引用

≯℡__Kan透↙ 提交于 2020-01-26 16:28:23
WeakReference 弱引用 定义:弱引用,与强引用(我们常见的引用方式)相对;特点是:GC在回收时会忽略掉弱引用对象(忽略掉这种引用关系),即:就算弱引用指向了某个对象,但只要该对象没有被强引用指向,该对象也会被GC检查时回收掉。 强引用实例自然不会被GC回收! 如何引出弱引用?弱引用的实际用途是什么? 什么是内存泄漏?Java使用有向图机制,通过GC自动检查内存中的对象;如果GC发现一个或一组对象为不可达的状态,则将该对象从内存中回收。也就是说:一个对象不被任何引用所指向,则该对象会在被GC发现的时候回收。 可能导致内存泄漏的实例: Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { mImageView.setImageBitmap(mBitmap); }; }; 当使用内部类(或者匿名类)来创建Handler的时候,Handler对象会隐式地持有一个外部类的对象(通常是Activity)的引用(否则怎么可能通过Handler来操作Activity的View?)。而Handler通常会伴随着一个耗时的后台线程(比如:拉取网络图片);该后台线程在任务执行完毕后,通过消息机制通知Handler,然后Handler把图片更新到界面上

Activity onDestroy() 回调缓慢问题分析及完美解决方案

大憨熊 提交于 2020-01-26 15:43:40
  说到Activity的onDestroy,对所有的Android开发者都很熟悉,但是不一定都知道里面存在着一些坑,分享给大家,以后踩中的时候可以应急 用Activity的时候,会发现如下问题:   有时候会发现Activity的onDestroy方法 回调比较缓慢(可以达到好几秒钟之后才调用) ,即使之前使用finish方式关闭Activity也一样 onDestroy回调慢带来什么问题呢?   有可能再次打开Activity的时候,都走完了onCreate,onResume之后上一次的onDestroy方法才被调用,想想如果在onResume和 onDestroy中共同维护了一个变量(isActivityShowing --> Activity是否正在显示),这个时候这个状态就错了。 解决方法与建议   所以建议不要在Activity的onDestroy方法中做有关于数据存储,状态维护的事情,回收资源也最好不要完全依赖这个方法,可以用下面的方式 比较靠谱的解决方式 private boolean isDestroyed = false; private void destroy() { if (isDestroyed) { return; } // 回收资源      isDestroyed = true; } @Override protected void onPause

Fragment之我的解决方案:Fragmentation

送分小仙女□ 提交于 2020-01-26 15:41:20
Fragment系列文章: 1、 Fragment全解析系列(一):那些年踩过的坑 2、 Fragment全解析系列(二):正确的使用姿势 3、Fragment之我的解决方案:Fragmentation 如果你通读了本系列的前两篇,我相信你可以写出大部分场景都能正常运行的Fragment了。如果你想了解更多,那么你可以看看我封装的这个库:Fragmentation。 本篇主要介绍这个库,解决了一些BUG,使用简单,提供实时查看栈视图等实用功能。 源码地址: Github ,欢迎Fork,提Issues 。 Demo网盘下载 Demo演示:单Activity+多Fragment demo.gif Fragmentation 为"单Activity + 多Fragment的架构","多模块Activity + 多Fragment的架构"而生,帮你简化使用过程,修复了官方Fragment库存在的一些BUG。 特性 1、 为重度使用Fragment而生 2、 提供了方便的管理Fragment的方法 3、 有效解决Fragment重叠问题 4、 实时查看Fragment的(包括嵌套Fragment)栈视图,方便Fragment嵌套时的调试 5、 增加启动模式、startForResult等类似Activity方法 6、 修复官方库里pop(tag/id)出栈多个Fragment时的一些BUG

【PTA】【数据结构与算法】贪心算法

北城余情 提交于 2020-01-26 09:27:14
判断题 1.只有当局部最优跟全局最优解一致的时候,贪心法才能给出正确的解。 T F 2.Let S be the set of activities in Activity Selection Problem. The greedy rule of “collecting the activity that starts the latest” is correct for finding a maximum-size subset of mutually compatible activities of S. T F 来源: CSDN 作者: 葑鈊丶 链接: https://blog.csdn.net/qq_43733499/article/details/103934508