![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 74
Bill_xiao
从事多年的android开发
展开
-
Android 保证进程广播可以发生出去
在Android O版本之后对广播增加了很多限制,可以如下修改intent = new Intent(intent);//增加该flag,则广播不会发送给已停止的packageintent.addFlags(Intent.FLAG_EXCLUDE_STOPPED_PACKAGES);//当没有启动完成时,不允许启动新进程if (!mProcessesReady && (intent.getFlags()&Intent.FLAG_RECEIVER_BOOT_UPGRAD原创 2021-04-08 20:45:27 · 280 阅读 · 0 评论 -
Android Bootup Debug思路
坚持总结如果机器在开机过程中出现死机和重启的情况,可以由以下几点的Debug思路:一、抓取log 一份正常启动log,一份异常启动log。log部分包括logcat和串口log,如果是mtk平台 的话,可以抓取mtklog 和串口log。如果有NE或者ANR的相应的log也一并导出,anr:data/anr ,aee:data/aee_exp二、定位异常发生的阶段性这部分就需要在log中找相应的启动关键字。如果找到关键字,再定位具体发生错误的代码和函数,也可以对比正常的log,来找...原创 2021-03-20 17:04:28 · 428 阅读 · 0 评论 -
安卓ANR问题1_ANR问题类型及产生原理
ANR问题类型及产生原理ANR(Application Not Responding):即应用无响应. 在日常使用安卓手机的过程中, 对最anr最直接的印象就是手机弹框显示应用未响应. 选择继续等待或者关闭.如果应用程序的主线程在规定的时间内, 没有完成特定操作和事件, 就会发生ANR.四种ANR类型KeyDispatchTimeout : input事件在5S内没有处理完成发生ANR ServiceTimeout : bind,create,start,unbind等操作,前台Servic转载 2021-03-11 15:30:56 · 848 阅读 · 1 评论 -
android 关机流程详细分析(转)
前面的博客有提到过android事件上报流程,InputReaderThread 从EventHub读到按键事件后,交给InputDispatcher 往上上报,我们从这里跟踪一下长按power键关键流程,frameworks/native/services/inputflinger/InputDispatcher.cpp void InputDispatcher::notifyKey(const NotifyKeyArgs* args) { … mPolicy-&g.转载 2020-10-09 15:21:54 · 2785 阅读 · 0 评论 -
Android SystemUI之启动流程(一)
一、简介 SystemUI是系统最重要的一个APK,它属于persistent app,什么是persistent app呢?简单的来说就是,具有系统签名,并且在AndroidMainfest中声明persistent=true,如果是使用flag来匹配查找的话:ApplicationInfo.FLAG_PERSISTENT。目前系统具有这类app还有com.mediatek.ims(短信),com.android.phone(电话)。这类的app是在android系统环境准备完成之后...原创 2020-07-09 15:50:37 · 4240 阅读 · 0 评论 -
ActivityManagerService之进程管理(四)
一、初步了解AMS的进程管理 引用邓凡平的深入理解系列的一些知识1. Linux进程调度优先级和调度策略调度优先级和调度策略是操作系统中一个很重要的概念。简而言之,它是系统中CPU资源的管理和控制手段。如何理解?此处进行简单介绍。读者可自行阅读操作系统方面的书籍以加深理解。·相对于在OS上运行的应用进程个数来说,CPU的资源非常有限。·调度优先级是OS分配CPU资源给应用进程时(即调度应用进程运行)需要参考的一个指标。一般而言,优先级高的进程将更有机会得到CPU资...原创 2020-07-07 17:07:10 · 1211 阅读 · 0 评论 -
ActivityManagerService之深入理解Activity启动流程(二)
一、Activity启动方式 activity的启动方式大体可以分三种: 1.通过桌面点击app图标方式启动 2.通过代码的方式启动startActivity ...原创 2020-07-03 18:42:21 · 2673 阅读 · 0 评论 -
ActivityManagerService之深入理解Activity启动流程(三)
一、Activity启动方式 activity的启动方式大体可以分三种: 1.通过桌面点击app图标方式启动 2.通过代码的方式启动startActivity ...原创 2020-07-03 18:34:28 · 1124 阅读 · 0 评论 -
ActivityManagerService启动之旅(一)
一、AMS的简介 ActivityManagerService,简称AMS。如果没有学习它的话,你可能会对他感觉到神秘而复杂。如果你学习了解之后就会觉得它并不那么神秘但是确实很复杂。AMS的主要工作就是:Activity的管理,service的管理,brocastreceiver的管理,进程管理和APP Crash的管理,其实APP crash涉及到的知识主要还是Activity的管理和进程管理这两部分知识。AMS还管控其他事情,比如,app的耗电量,性能,近期列表等,有些朋友可能会说近期列表是...原创 2020-06-24 17:44:18 · 2041 阅读 · 0 评论 -
电源管理之充电动画
一、充电动画的启动入口 充电动画是通过通过启动 kpoc_charger.rc的方式启动kpoc_charger.rc的内容:on charger start kpoc_charger //充电打印服务service kpoc_charger /system/bin/kpoc_charger class charger //充电服务所以充电动...原创 2019-11-14 16:40:32 · 1793 阅读 · 0 评论 -
控件getHeight和getWidth等于0的解决办法
[mw_shl_code=java,true]public class MyImageView extends ImageView { public MyImageView(Context context, AttributeSet attrs) { super(context, attrs); } public MyI转载 2016-12-21 11:14:00 · 1672 阅读 · 0 评论 -
View的绘制
view的绘制主要有三步:onMeasure ,onLayout,,onDraw。这三步又分两种情况,view和viewgroup的测绘。viewgroup主要是对子元素的遍历再调用view的测绘过程。所以主要研究view的测绘就好。 onMeasure源码:protected void onMeasure(int widthMeasureSpec, int heightMeasureS原创 2017-02-26 23:50:26 · 350 阅读 · 0 评论 -
Android中子线程真的不能更新UI吗?
Android的UI访问是没有加锁的,这样在多个线程访问UI是不安全的。所以Android中规定只能在UI线程中访问UI。但是有没有极端的情况?使得我们在子线程中访问UI也可以使程序跑起来呢?接下来我们用一个例子去证实一下。新建一个工程,activity_main.xml布局如下所示:xml version="1.0" encoding="utf-8"?>Relati转载 2017-03-21 14:37:37 · 361 阅读 · 0 评论 -
学习AIDL
来自:http://www.jianshu.com/p/a8e43ad5d7d2前言在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了。不过又转念一想,我辈年轻人自当有一种一往无前的锐气,标题大气一点岂不更好?并且大家都是文明人,总归更多的是转载 2017-04-18 11:02:17 · 309 阅读 · 0 评论 -
Android SystemProperties设置/取得系统属性的用法总结
转载:http://blog.csdn.net/ameyume/article/details/80564921.Android SystemProperties简介介绍了设置属性需要的权限,已经设置权限的方法。Systemproperties类在android.os下,但这个类是隐藏的,上层程序开发无法直接使用。其实用Java的反射机制是可以使用这个类转载 2017-09-02 10:23:37 · 1010 阅读 · 0 评论 -
WindowManager.LayoutParams.type属性
type 的取值: 应用程序窗口。 public static final int FIRST_APPLICATION_WINDOW = 1; 所有程序窗口的“基地”窗口,其他应用程序窗口都显示在它上面。 public static final int TYPE_BASE_APPLICATION =1;转载 2017-12-25 15:35:56 · 1587 阅读 · 0 评论 -
android getruntime.exec 权限
android 5.0以后执行android getruntime.exec()需要系统权限。在aAndroidManifest.xml 增加:android:sharedUserId="android.uid.system"原创 2018-03-27 21:44:37 · 4275 阅读 · 1 评论 -
Fragment 踩过的那些坑
Fragment 有许多优点: 1.它可以数据保存,特别在网页加载并且需要反复使用的页面上。 2.UI组件切换的灵活性及流畅性 ,在配合使用 table时更能体现。原创 2018-04-03 18:22:14 · 554 阅读 · 0 评论 -
Android ANR 分析学习总结(转)
1. 什么情况下会发生anr(1). KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应(2). BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成(3). ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处...转载 2019-03-05 13:53:29 · 581 阅读 · 0 评论 -
JNI 动态注册和静态注册的详解
对于未知的技术我们心里总是比较忐忑,但是当你攻下这个技术领域的时候又是一种满满的收获,坚持探索----------Bill 2019.04.08 本博文采用问答的方式讲解JNI的动态注册和静态注册的方式 1. 什么是JNI? JNI的英文缩写是 java nativie interface ,按照字面解释就是java 本地接口。什么样的接口才叫nativi...原创 2019-04-08 19:33:39 · 2381 阅读 · 0 评论 -
Android异常分析
关于异常异常?异常就是一种程序中没有预料到的问题,既然是没有预料到的,就可能不在原有逻辑处理范围内,脱离了代码控制,软件可能会出现各种奇怪的现象。比如:android系统常见异常现象有应用无响应、应用停止运行、冻屏、重启、死机等,这些异常系统有统一的异常处理机制,出现异常系统就会执行相应的操作,最终有相应的现象体现出来。另外,一些不在预料之中的界面显示问题,操作问题,运行卡顿问题等也可以归...转载 2019-07-06 12:42:53 · 703 阅读 · 0 评论 -
JNI数据类型探究
java和C++的参数传递都是分值传递和引用传递,基本类型就是值传递,引用类型是地址传递。JNI的是用C++写的,所以引用类型也是地址传递,比如string。一、如果是基本数据类型就比较好处理直接使用强转的方式,比如int a=10;jint b=(jint)a;需要注意的是jchar的是16位,而C++的是8位。所以在数据转换的时候要注意,否则可能出现乱码之类的情况。二、引用类型...原创 2019-08-23 15:23:51 · 397 阅读 · 0 评论 -
Android 杀死进程从上层到底层(转)
基于Android 6.0的源码剖析, 分析kill进程的实现原理,以及讲讲系统调用(syscall)过程,涉及源码:/framework/base/core/java/android/os/Process.java/framework/base/core/jni/android_util_Process.cpp/system/core/libprocessgroup/process...转载 2019-09-19 14:50:33 · 1749 阅读 · 0 评论 -
SELinux 安全机制实践应用
当你有所得,最好是用文字总结记录,这才是进步的关键!! --------20191009一、先了解一下SELinux的安全机制DAC和MACSELinux出现之前,Linux上的安全模型叫DAC,全称是Discre...原创 2019-10-09 21:06:04 · 528 阅读 · 0 评论 -
GitHub 优秀的 Android 开源项目和框架
GitHub 优秀的 Android 开源项目 淘宝技术牛p博客整理开发中最常用的GitHub上 优秀的 Android 开源项目整理(精品)博客分类: Android 开源集合 本文章已收录于: Git原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Tr转载 2017-03-17 18:05:50 · 6333 阅读 · 0 评论 -
使用Android studio所遇到的问题
以下问题是自己在使用android studio所遇到的一些问题,为自己以后的回顾和其他也有遇到相同问题的朋友。 问题一:Gradle sync failed: Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy settings eith原创 2017-03-01 22:58:00 · 558 阅读 · 0 评论 -
框架思想
一、adapter框架 adapter与其他控件的搭配使用,可以看作是:框架(listviiew、viewpager)+内容(数据或者view具体行为)+中间关联(adapter)。这样做的目的是减少代码之间的耦合度,提高代码之间的适应性。行为与框架分开,通过adapter耦合,这样可以满足许多的需求,而不用重复编写代码。所以在代码中的耦合度是很重要的概念。原创 2017-01-17 11:33:56 · 469 阅读 · 0 评论 -
Fragment学习总结
一、Fragment的生命周期的特点及注意点: 1. onAttach:onAttach()在fragment与Activity关联之后调调查用。需要注意的是,初始化fragment参数可以从getArguments()获得,但是,当Fragment附加到Activity之后,就无法再调用setArguments()。所以除了在最开始时,其它时间都无法向初始化参数添加内容原创 2017-01-19 00:37:18 · 379 阅读 · 0 评论 -
ViewPager学习总结
viewpager主要是实现pagerAdapter中4个抽象方法,如下 “` public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == arg1;原创 2017-01-19 01:40:26 · 370 阅读 · 0 评论 -
滑动学习总结
实现view的滑动,主要实现原理是layout的重绘。大概有以下几种: 一、在view中onTouchEvent方法中重写,无论在viewgroup中多少个view都可以实现自由滑动。大致的编码如下public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX();原创 2017-01-20 00:53:33 · 465 阅读 · 0 评论 -
动画的学习
一、android实现动画有三中方式:view动画、帧动画和属性动画。其实帧动画与view动画的原理是一样的。view动画需要注意的是:它是改变view的影像,而不改变位置。因此在视图中动画后的view点击无效果。而属性动画改变的是view在viewgroup的属性值,移动后点击有效果。二、三种动画所实现方式及意义:三、viewgroup动画的使用:原创 2017-01-20 22:42:16 · 271 阅读 · 0 评论 -
文章标题
SlidingMenu是一个侧滑的开源项目需要应用第三方包。其主要实现的步骤有: 1. 设置侧滑layout 2. 设置侧滑属性 3. 侧滑view关联到activity上容 如果是直接使用slidingmenuactivity就不需要关联。实现的方式: 1. 在activity中直接使用,如下步骤: SlidingMenu menu原创 2017-01-18 01:15:43 · 280 阅读 · 0 评论 -
http://www.cnblogs.com/GnagWang/archive/2011/03/31/2001067.html
Android的Window类2011-03-25 10:02 by Keis, 110 visits, 网摘, 收藏, 编辑Android的Window类(一) Android的GUI层并不复杂。它的复杂度类似于WGUI这类基于布局和对话框的GUI,与MFC、QT等大型框架没有可比性,甚至飞漫魏永明的MiniGUI都比它复杂许多。您也许会问,这样简单的GUI如何实现浏览器呢转载 2017-01-16 22:58:06 · 613 阅读 · 0 评论 -
Aidl测试心得
在使用aidl是需要注意其规则的使用:一、数据类型:AIDL默认支持一些数据类型,在使用这些数据类型的时候是不需要导包的,但是除了这些类型之外的数据类型,在使用之前必须导包,就算目标文件与当前正在编写的 .aidl 文件在同一个包下——在 Java 中,这种情况是不需要导包的。比如,现在我们编写了两个文件,一个叫做Book.java ,另一个叫做 BookManager.aidl,它们原创 2016-12-08 13:21:27 · 750 阅读 · 0 评论 -
深入理解Android的startservice和bindservice
深入理解Android的startservice和bindservice一、首先,让我们确认下什么是service? service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互、它必须由用户或者其他程序显式的启动、它的优先级比较高,它比处于前台的应用优先级低,但是比后台的其他应用优先级高,这就决定了当系统因为缺少内存而销毁某转载 2016-12-08 13:17:57 · 465 阅读 · 0 评论