Android ActivityManager与WindowManager】的更多相关文章

<uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 使用SYSTEM_ALERT_WINDOW时必须要加 --> import android.app.Activity; import android…
android2.2以后,如果服务在ondestroy里加上了start自己,用kill backgroudprocess通常无法结束自己.有一种最新发现的方法,利用反射调用forceStopPackage来结束进程Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);forceStopPackage.setAccessible(true);forceSto…
ActivityManager:   对Activity交互提供了接口, 利用它可以方便的对Memory, Processes, Task, Service 等进行管理,. 这里对Delphi接口进行了翻译,详细信息可以访问官方网站. { android.app.ActivityManager imported by flcop(zylove619@hotmail.com) } unit Androidapi.JNI.ActivityManager; interface uses System.…
前方高清大图~~~~ 绘制的图片资源: // draw bitmap BitmapDrawable bmpDraw = (BitmapDrawable) getResources().getDrawable(R.drawable.hands); // 悬浮窗配置 private WindowManager mWindowManager; private WindowManager.LayoutParams mWindowParams; // mWindowManager = (WindowMan…
Init 是所有Linux程序的起点,而Zygote于Android,正如它的英文意思,是所有java程序的'孵化池'(玩过星际虫族的兄弟都晓得的).用ps 输出可以看到 >adb shell ps | grep -E 'init|926' root 1 0 656 372 00000000 0805d546 S /init root 926 1 685724 43832 ffffffff b76801e0 S zygote system 1018 926 795924 62720 ffffff…
开始学设计模式 1 单例模式 单例模式可以说是最容易理解的模式了,也是应用最广的模式之一,先看看定义吧. 定义:确保单例类只有一个实例,并且这个单例类提供一个函数接口让其他类获取到这个唯一的实例. 什么时候需要使用单例模式呢:如果某个类,创建时需要消耗很多资源,即new出这个类的代价很大:或者是这个类占用很多内存,如果创建太多这个类实例会导致内存占用太多. 关于单例模式,虽然很简单,无需过多的解释,但是这里还要提个醒,其实单例模式里面有很多坑.我们去会会单例模式.最简单的单例模式如下: publ…
Android IPC简介 IPC是Inter-Process Communication的缩写,含义就是进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程.那么什么是进程,什么是线程,进程和线程是两个截然不同的概念.在操作系统中,线程是CPU调度的最小单元,同时线程是一种有限的系统资源.而进程指的一个执行单元,在PC和移动设备上指的是一个程序或者一个应用.一个进程可以包含多个线程,因此进程和线程是包含被包含的关系,最简单情况下,一个进程可以只有一个线程,即主线程,在Android里面…
接上篇<android开发艺术探索>读书笔记(一) No1: 在android中使用多进程只有一种方法,那就是给四大组件在AndroidMenifest中指定android:process属性. No2: 默认进程的进程名是包名. No3: ":"要加上当前包名,进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中:另外一种属于全局进程,其他应用通过ShareUID方式可以和它跑在同一个进程中. No4: Android系统会为每个应用分配一个唯一的UID,…
Android开发艺术探索--第二章:IPC机制(上) 本章主要讲解Android的IPC机制,首先介绍Android中的多进程概念以及多进程开发模式中常见的注意事项,接着介绍Android中的序列化机制和Binder,然后详细的介绍Bundle,文件共享,AIDL,Messenger,ContentProvider和Socker等进程间通讯的方法,为了更好的使用AIDL进行进程间通讯,本章引入了Binder连接池的概念,最后,本章讲解各种进程间通信方式的优缺点和使用场景,通过本章,可以让读者对…
摘要 Binder是android中一个很重要且很复杂的概念,它在系统的整体运作中发挥着极其重要的作用,不过本文并不打算从深层次分析Binder机制,有两点原因:1是目前网上已经有2篇很好的文章了,2是对Binder机制进行深入底层乃至驱动的分析这一过程相当困难且相当耗时,因此并不适合重复造轮子.本文的角度是对Android的Binder机制从整体和概念上进行分析,能够让大家很快明白到底什么是Binder,Binder是干什么的,Binder和应用开发的关系是什么,总之,这篇文章还是很值得去看一…
  ANR即Application Not Responding应用无响应,一般在ANR的时候会弹出一个应用无响应对话框.也许有些开发者在使用某些手机开发中不在弹出应用无响应弹出框,特别是国产手机Android4.0以上的系统中,即使在开发者选项中设置了“显示所有应用无响应-为后台应用显示无响应ANR对话框”,主要是因为在某些国产手机系统中就将该选项屏蔽了,应用超过了一定时间无响应也不会弹出ANR对话框了. 一般情况下应用无响应的时候回产生一个日志文件,位于/data/anr/文件夹下面,tra…
引言 本文主要目标是整理下我在2016年第一季度针对Android学习的内容,不会深入细节,只是简单聊聊框架以及学习的方法. 我的Android之路 因为之前对Android有一个简单的接触,研究生期间基于ffmpeg做了一个简单的媒体播放器,几年之后也忘得差不多了. 我本人仅有的经验是在Windows下开发,熟悉c++,对多媒体开发有一定了解,基本上可以独立完成播放器的编写.简单了解一些Linux开发经验. 由于Android官网推荐使用Ubuntu作为Android首选开发环境,在实际开始学…
一.系统架构: 一).系统分层:(由下向上)[如图] 1.安卓系统分为四层,分别是Linux内核层.Libraries层.FrameWork层,以及Applications层: 其中Linux内核层包含了Linux内核和各种驱动: Libraries层包含各种类库(动态库(也叫共享库).android运行时库.Dalvik虚拟机),编程语言主要为C或C++ FrameWork层大部分使用java语言编写,是android平台上Java世界的基石 Applications层是应用层,我们在这一层进…
AIDL:Android Interface Definition Language,即 Android 接口定义语言. AIDL 是什么 Android 系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 为了使其他的应用程序也可以访问本应用程序提供的服务,Android 系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现.与很多其他的基于 RPC 的解决方案一样,Android 使用一种接口定义语言(Interface Def…
Handler Handler是Android系统中的一种消息传递机制,起作用是应对多线程场景.将A进程的消息传递给B线程,实现异步消息处理.很多情况是将工作线程中需要更新UI的操作消息传递给UI主线程,而实现更新UI操作. 因为工作线程和主线程是共享地址空间,即Handler实例对象mHandler位于线程间共享的内存堆上,工作线程和主线程直接使用该对象,只需要注意多线程的同步问题.工作系统通过mHandler向其成员变量MessageQueue中添加Message,而主线程一直处于loop中…
Binder架构图: 先来瞅一下它的整体架构图: 其中粉红部分是上层的Binder,而蓝色的则是下层的Binder,很显然上层的是依赖于下层的. 什么是Binder[有个大概了解]? 这里从几个层面来说一下: 从IPC角度来说: 定义:Binder是Android中的一种跨进程通信方式,该通信方式在linux中没有,是Android独有的. 作用:在Android中实现跨进程通信. 从Android Driver层来说: 其实也就是指这一层: 定义:Binder还可以理解为一种虚拟的物理设备,它…
UI是实现用户交互的重要途径之一,而Android中一个重要的UI元素就是SystemUI,本文分析基于Android 5.1,分析SystemUI的启动及运行过程. SystemUI源代码所在路径为: frameworks/base/packages/SystemUI 查看AndroidManifest.xml,整理软件实现思路. 包名为com.android.systemui package="com.android.systemui" 分配的userID为android.uid.…
1 Activity的生命周期和启动模式 1.1 Activity的生命周期全面分析 用户正常使用情况下的生命周期 & 由于Activity被系统回收或者设备配置改变导致Activity被销毁重建情况下的生命周期. 1.1.1 典型情况下的生命周期分析 Activity的生命周期和启动模式   Activity第一次启动:onCreate->onStart->onResume. Activity切换到后台( 用户打开新的Activity或者切换到桌面) ,onPause->onS…
什么是ANR? Application Not Responding 造成ANR的主要原因: 应用程序的响应性是由ActivityManager和WindowManager系统服务监视的,当监视到在Activity中主线程点击超过5秒木有响应或者是在广播UI线程里超过10秒木有响应则会导致ANR.下面具体列举一下: 主线程被I/O操作(从4.0之后网络IO不允许在主线程中)阻塞. 主线程中存在耗时的计算. 造成ANR的主要原因:Android中哪些操作是在主线程呢? Activity的所有生命周…
又来更新啦,Android面试题<思考与解答>11月刊奉上. 说说View/ViewGroup的绘制流程 View的绘制流程是从ViewRoot的performTraversals开始的,它经过measure,layout,draw三个过程最终将View绘制出来. performTraversals会依次调用performMeasure,performLayout,performDraw三个方法,他们会依次调用measure,layout,draw方法,然后又调用了onMeasure,onLa…
调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据WindowManager.LayoutParams属性不同,效果也就不同了.比如创建系统顶级窗口,实现悬浮窗口效果!WindowManager的方法很简单,基本用到的就三个addView,removeView,updateViewLayout.而WindowManager.LayoutParams的属性就…
首先当然是创建Android项目,你可以选择最新的Android Studio也可以选择eclipse都是一样的.我们重点讲解开发OpenGL ES的流程 1.定义顶点着色器和片段着色器 第一节我们讲解的已经很细致了,为了便于理解在这里在详细的说明一下.并且换一种方式定义着色器. 我们知道第一篇定义的顶点的坐标和颜色是分开的,这样可以但如果把它们放在一起会方便许多. 假设我们要绘制一个长方形和两条直线,二个定点,我们就需要这样来定义这个数组. float[] tableVerticesWithT…
我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码     <uses-permission android:name="android.permission.CAMERA"/>//摄像头权限     SD卡读写权限     <uses-permission android:name="android.permission…
用了我一个周末的时间,个中愤懑就不说了,就这个问题,我翻遍全球网络没有一篇像样的资料,现在将实现原理简单叙述如下: 调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据WindowManager.LayoutParams属性不同,效果也就不同了.比如创建系统顶级窗口,实现悬浮窗口效果! WindowManager的方法很简单,基本用到的就三个addView,…
Resources/drawable 下新增如下文件: push_bottom_in.xml <?xml version="1.0" encoding="utf-8" ?> <!-- 上下滑入式 --> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration=" a…
[Activity(Theme = "@style/MyStyleBottom")] public class SelectPicPopupWindow : Activity, IOnClickListener { private const int Display_RequestCode = 0xa1; private const int Camera_RequestCode = 0xa2; private const int PhotoGallery_RequestCode = 0…
1.  init 根据init.rc 运行 app_process, 并携带‘--zygote' 和 ’--startSystemServer' 参数. 2.  AndroidRuntime.cpp::start() 里将启动JavaVM,并且注册所有framework相关的系统JNI接口. 3.  第一次进入Java世界,运行ZygoteInit.java::main() 函数初始化Zygote. Zygote 并创建Socket的server 端. 4.  然后fork一个新的进程并在新进程…
1.什么是ANR(Application Not Responding) 在Android中,应用程序的响应性是由ActivityManager和WindowManager系统服务监视的.当监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR A:KeyDispatchTimeout(5 seconds) --主要类型 按键或触摸事件在特定时间内无响应 B:BroadcastTimeout(10 seconds) BroadcastReceiver在特定时间内无法处理完成 C…
<倚天屠龙记中>有这么一处:张三丰示范自创的太极剑演示给张无忌看,然后问他记住招式没有.张无忌说记住了一半.张三丰又慢吞吞使了一遍,问他记住多少,张无忌说只记得几招了.张三丰最后又示范了一遍,张无忌想了想说,这次全忘光了.张三丰很满意,于是放心让张无忌与八臂神剑去比试. 首先声明,这一篇篇幅很长很长很长的文章.目的就是为了把 Android 中关于 View 测量的机制一次性说清楚.算是自己对自己较真.写的时候花了好几天,几次想放弃,想放弃的原因不是我自己没有弄清楚,而是觉得自己叙事脉络已经紊…
BInder机制 Linux内核的基础知识 进程隔离/虚拟地址空间 操作系统当中为了保证进程间互不干扰,设计了进程隔离的技术,避免了一个进程去操作另一个进程的数据.进程隔离用到了虚拟地址空间,不同进程的虚拟地址空间是不同的,不同进程之间数据不共享,进程要和另一个进程通信就需要通过某种进程间的通信机制去进行,在Android当中就是通过Binder机制来完成. 系统调用 Linux内核当中有个很重要的概念叫系统调用,因为对内核会有某种保护机制来告诉应用程序只能访问某些许可资源,而不许可资源是不能被…