本来想分析AppsCustomizePagedView类,不过今天突然接到一个临时任务.客户反馈说机器界面的图标很难点击启动程序,经常点击了没有反应,Boss说要优先解决这问题.没办法,只能看看是怎么回事.今天分析一下Launcher启动APP的过程.从用户点击到程序启动的流程,下面针对WorkSpace上的快捷图标点击启动流程进行分析.(如果分不清WorkSpace是什么或者不知道快捷方式和其他图标区别,请看我前面的Launcher分析文章) PS:新建的QQ群,有兴趣可以加入一起讨论:And…
前面两篇文章都是写有关Launcher配置文件的修改,代码方面涉及不多,今天开始进入Launcher代码分析. 我们开机启动Launcher,Launcher是由Activity Manager启动的,而Activity Manager是由system server启动. 原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3157452.html 1.Launcher进程启动过程 可以由下面图看到Launcher进程是如何被创建启动: Activity M…
最近工作都在修改Launcher,所以打算把分析源码和修改源码的过程记录下来,最近会写一些关于Launcher的分析和修改博文.因为我是修改4.0.3的Launcher,所以后面文章里面的Launcher都是基于Android4.0.3的Launcher2修改.Launcher源码比较多,而且里面应用了很多设计模式,要把它分析清楚要花不少精力,网上也有一些零碎的分析文章,不过关于修改的文章不多.所以打算写一些分析和修改Launcher结合的文章. 原创博文,转载请标明出处:http://www.…
已经很久没更新Launcher系列文章,今天不分析源码,讲讲如何在Launcher里面添加桌面设置的功能.目前很多第三方Launcher或者定制Rom都有简单易用的桌面设置功能.例如小米MIUI的Launcher就有很丰富编辑功能.今天开始会讲一下如何实现桌面编辑功能.网上对于实现Launcher一些编辑功能的文章凤毛麟角,基本没什么资料可以参考,只能靠自己摸索对比别人Launcher的效果. 桌面编辑功能我主要分为 壁纸设置.Widget插件.切换特效.主题 4个部分.这个主要是参考OPPO的…
前面已经写过Hotseat分析的文章,主要是讲解如何在Launcher里面配置以及修改Hotseat的参数.今天主要是讲解一下如何在Hotseat里面的Item显示名称.这个小问题昨天折腾了半天,最后幸亏我亲爱的女朋友大人提醒了我,才想到原因.在此十分感谢我女朋友大人的提醒,幸好她不是做程序员,不然我就要失业了O(∩_∩)O哈哈~ (PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434) 默认Hotseat里面的元素都没有标题 1.Hotseat隐藏文件夹标题 刚开始…
上面一篇文章说了Launcher是如何被启动的,Launcher启动的过程主要是加载界面数据然后显示出来, 界面数据都是系统APP有关的数据,都是从Launcher的数据库读取,下面我们详细分析Launcher如何加载数据. 在Launcher.java的onCreate()方法里面,调用了开始加载数据接口: //Edited by mythou//http://www.cnblogs.com/mythou///加载启动数据 if (!mRestoring) { mModel.startLoad…
今天主要是分析一下Launcher里面的快捷方式导航条——HotSeat,一般我们使用手机底下都会有这个导航条,但是如果4.0的Launcher放到平板电脑里面运行,默认是没有HotSeat的,刚好我这里的运行环境类似平板,系统默认把HotSeat去掉了.办法,只能自己想办法把它弄出来,所以今天主要是分析如何在你Launcher上添加HotSeat以及分析HotSeat实现. Hotseat配置是通过配置文件控制的,一般来说,你需不需要Hotseat只要在配件文件里面写一下就OK,不过Hotse…
本来打算分析CellLayout的源码,不过因为它们之间是容器包含关系,所以打算先把PagedView分析.PagedView代码很多,今天主要是分析跟核心功能相关的代码.PagedView主要实现一个功能——页面滑动. PagedView继承了ViewGroup类,是一个容器类,可以包含第三方的View,实际上Launcher里面的PagedView主要就是包含了CellLayout的显示.对于一个View类来说,我们触摸屏幕界面,首先会触发View类的onInterceptTouchEven…
今天主要是分析一下Launcher里面的所有应用列表.Android4.0 Launcher的所有应用列表跟2.X比较大的区别就是多了Widget的显示.下面会详细分析Launcher里面有关所有应用列表配置和代码分析. 1.AllApp列表配置文件 配置AllAPP应用列表界面的配置文件是\res\Layout\apps_customize_pane.xml文件.AllAPP列表使用了一个TabHost组织了两个页面(全部应用和Widget),通过界面上面的TabHost进行切换.下面是Tab…
接着上一篇文章,继续分析AllAPP列表界面.上一篇文章分析了所有应用列表的界面构成以及如何通过配置文件修改属性.今天主要是分析PagedViewWithDraggableItems类,因为在我们分析AppsCustomizePagedView之前,需要先了解PagedViewWithDraggableItems.这是因为他们是继承关系.我们先看看AppsCustomizePagedView的类继承关系.(以后博客的图片都会加上水印,因为发现很多转载文章的人把所有作者信息都删除了,鄙视这种行为…
Android4.0的Launcher自带了一个简单的分页指示器,就是Hotseat上面那个线段,这个本质上是一个ImageView利用.9.png图片做,效果实在是不太美观,用测试人员的话,太丑了.特别是搭配其他风格的图标和背景,的确不好看.所以打算自己重新写一个指示器.这个所谓的分页指示器作用很简单,就是告诉用户界面有多少分屏,目前处于第几分屏.当然目前也有一些Launcher增强了这个功能,只要滑动这些指示器就可以 快速滑动桌面. 今天给大家讲讲如何自定义一个分页指示器,并添加到Launc…
很久没写Launcher分析的文章,最近实在太忙.今天七夕本来是想陪女朋友逛街 ,碰巧打台风呆在家里,就继续写一篇文章.今天主要是讲一下Launcher里面的Widget列表,这方面信息比较多,今天重点讲一下Widget信息收集和Launcher是如何显示Widget.这是这个系列第12篇文章,可是有关Launcher的分析感觉还有很多东西要写. Widget列表是Android4.0以后才有的一种新特性,主要是可以直接查看Widget的缩略图,方便用户使用.而且Widget列表放到了AllAp…
Android Launcher分析和修改 http://www.cnblogs.com/mythou/category/499819.html Android Launcher分析和修改1——Launcher默认界面配置(default_workspace)http://www.cnblogs.com/mythou/p/3153880.html…
上一篇文章说了如何修改Android自带Launcher2的默认界面设置(http://www.cnblogs.com/mythou/p/3153880.html). 今天主要是说说Launcher里面图标.布局.壁纸等的设置问题.毕竟我们一般修改Launcher,这些都是需要修改的地方,也是比较容易修改的部分.按照效果图(效果图在上一篇文章),分开说明如何修改,以及里面涉及的逻辑分析. 原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3155692.h…
此前的文章我们学习了init进程.Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:Launcher的启动流程,并结合本系列的前三篇文章的内容来讲解Android系统启动流程.建议读这篇文章前要通读本系列的前三篇文章,否则你可能不会理解我在讲什么. 1.Launcher概述 Android系统启动的最后一步是启动一个Home应用程序,这个应用程序用来显示系统中已经安装的应用程序,这个Home应用程序就叫做Launcher.应用程…
/*********************************************************************** * Android用自己的app替换Launcher * 声明: * 有时候,我们可能会希望Android系统上只跑一个我们自己的app,这不是 * 瞎说,这是真的. * * 2016-1-7 深圳 南山平山村 曾剑锋 *******************************************************************…
原文:[android]清单文件中MAIN与LAUNCHER的区别 MAIN 和 LAUNCHER,之前一直不注意这两个有区别,写程序的时候都放到一个filter中,前两天面试问到了,总结一下: MAIN指定了程序入口地址. LAUNCHER是程序在手机桌面上的图标. 如果只设置了MAIN,没有设置LAUNCHER,则程序可以被安装到手机,但是在桌面看不到APP的图标,所以也就无法启动APP. 如果只设置了LAUNCHER,没有设置MAIN,则程序不知道从哪个Activity启动,所以也就不会在…
N1這款產品似乎沒有諾基亞的傳統風格,搭載Android系統以及酷似iPad mini的外觀,都在向外界傳遞著一個信號:諾基亞在變化.不過,沒有了移動設備部門的諾基亞,仍然心系消費電子市場,N1會是個好的轉捩點嗎? 回到產品本身,N1的品質到底如何?IBTimes 就在第一時間帶來了上手體驗门禁读卡器,稱它是一個很不錯的“iPad 替代選擇”. 設計   N1在尺寸上和iPad mini一致,配備 7.9 英寸螢幕.不止如此,耳機孔.音量鍵.攝像頭甚至底部的揚聲器,二者都幾乎設計在了相同位置.就…
一.启动页黑屏的问题 1.1 问题现象描述 Android App 启动页面黑屏的问题,现象表现为:Android 开发 App 启动时若没有做特殊处理的话,会出现一瞬间的白屏现象.即使启动页界面就加载一个布局,不做其他耗时处理,貌似也会出现一瞬间的白屏问题.当从桌面 Launcher 的小图标点击冷启动一个 App 的时候,程序需要进行一些基本的初始化操作,例如在Application 或者SplashActivity中做了很多耗时操作,例如初始化第三方SDK等,当手机性能不好,配置不高时,该…
Android多线程分析之三:Handler,Looper的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处 在前文<Android多线程分析之二:Thread的实现>中已经详细分析了Android Thread 是如何创建,运行以及销毁的,其重点是对相应 native 方法进行分析,今天我将聚焦于 Android Framework 层多线程相关的类:Handler, Looper, MessageQueue, Message 以及…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本:2.3.7_r1 Linux内核版本:android-goldfish-2.6.29 在上一篇博客<Android架构分析之硬件抽象层(HAL)>中,我们了解了硬件抽象层的基本数据结构和模块编写规则,现在,我们就来看怎样编写一个自定义的硬件抽象层模块并加入到Android系统中,同时,我们还要介绍应用程序怎样使用我们自定义的硬件抽象层模块. 硬件抽象层的作用是给上层应用程序提供一个访问硬件设…
一.前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理论到实战,从入门到深挖,手把手将性能优化实践到项目中,欢迎持续关注! 那么第一篇文章我就从应用的启动优化开始,根据实际案例,打造闪电般的App启动速度. 二.初识启动加速 来看一下Google官方文档<Launch-Time Performance>对应用启动优化的概述: 应用的启动分为冷启动.热启动.温启动,而启动最慢.挑战最大的就…
Android 系统的一个工程师(Romain Guy)针对Falcon Pro  应用,撰写了一个Android性能分析的文章.该文章介绍了如何分析一个应用哪里出现了性能瓶颈,导致该应用使用起来不流畅.找到原因.并修复问题.即使没有应用源码也能分析出问题大概根源. 需要的工具 工具很简单,只需要Android 4.2 SDK即可 聊聊性能 Android 4.1 的Project Butter关注于性能问题,并引入了一些新的性能分析工具.例如 systrace.虽然Android 4.2没有提…
1 前言 SurfaceFlinger作为Android图形显示系统处理逻辑的核心单元,我们有必要去了解其是如何启动,初始化及进行消息处理的.这篇文章我们就来简单分析SurfaceFlinger这个Binder系统服务的一些基本处理逻辑.接下来分两部分讲解: >> SurfaceFlinger启动与初始化 >> SurfaceFlinger消息队列处理机制 Tips: 本篇涉及的代码位置: /frameworks/native/services/surfaceflinger/ 2…
Android5.1.1 - APK签名校验分析和修改源码绕过签名校验 作者:寻禹@阿里聚安全 APK签名校验分析 找到PackageParser类,该类在文件“frameworks/base/core/java/android/content/pm/PackageParser.java”中.PackageParser类的collectCertificates方法会对APK进行签名校验,在该方法会遍历APK中的所有文件,并对每个文件进行校验.下面是该方法的部分源码: APK是一个ZIP格式的文件…
YARN DistributedShell源码分析与修改 YARN版本:2.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述 2 YARN DistributedShell不能满足当前需求 2.1 功能需求 2.2 YARN DistributedShell对需求的支持情况 2.3 需要对YARN DistributedShell进行的修改 3 YARN DistributedShell源码获取 4 YARN DistributedShell源码分析…
Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<Android多线程分析之一:使用Thread异步下载图像>中,曾演示了如何使用 Thread 来完成异步任务.Android 为了简化在 UI 线程中完成异步任务(毕竟 UI 线程是 app 最重要的线程),实现了一个名为 AysncTask 的模板类.使用 AysncTask 能够在异步任务进行的同时,…
Android多线程分析之二:Thread的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处   在前文<Android多线程分析之一:使用Thread异步下载图像>中演示了如何使用 Thread 处理异步事务.示例中这个 Java Thread 类都是位于 Framework 层的类,它自身是通过 JNI 转调 dalvik 里面的 Thread 相关方法实现的.因此要分析 Androd 中的线程,就需要分析这两层中的与线程相关的代…
Android多线程分析之一:使用Thread异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处   打算整理一下对 Android Framework 中多线程相关知识的理解,主要集中在 Framework 层的 Thread, Handler, Looper, MessageQueue, Message, AysncTask,当然不可避免地要涉及到 native 方法,因此也会分析 dalvik 中和线程以及消息处理相关的代码:…
整个Android系统的启动分为Linux Kernel的启动和Android系统的启动.Linux Kernel启动起来后,然后运行第一个用户程序,在Android中就是init程序. ------------------------------------------------- 以下的内容应该算是学习笔记,特地整理成文. ------------------------------------------------- 1 init程序 init是linux系统中用户空间的第一个进程.由…