android开发

Android的Framework分析---5 ActivityManager分析

时间秒杀一切 提交于 2020-03-28 05:26:33
Android系统开发交流群:484966421 OSHome。 微信公众号: oshome2015 ActivityManager是android框架的一个重要部分。它负责一新ActivityThread进程创建,Activity生命周期的维护,管理系统中的Acitvity的状态切换。 这边内容还有很多其它内容,具体请參看ActivityManager.java ,ActivityMangaerNative.java 和SystemServcer.java 文件。 这几个的类的关系例如以下: 上图非常清楚地描写叙述了ActivityManager框架的几个主要类之间的关系。我们做应用开发接触非常多的事实上就是ActivityManager类,该类也在SDK中发布。应用能够直接訪问,它提供了我们管理Activity的一些主要的方法 public List<RunningTaskInfo> getRunningTasks(int maxNum, int flags, IThumbnailReceiver receiver) throws SecurityException { try { return ActivityManagerNative.getDefault().getTasks(maxNum, flags, receiver); } catch

Android ART运行时与Dalvik虚拟机

隐身守侯 提交于 2020-03-28 05:22:15
这几天在做一个项目时需要在Android中使用OSGi框架(Apache Felix),于是在一个android 4.4.2 版本系统的某品牌的平板上实验。 实验内容很简单:把felix包里的felix.jar包和一些bundles的jar包用android sdk里的dx及aapt工具转化为包含dex字节码的jar 包。这样使这些jar包能在Android上跑起来。(因为Android上使用的是在Dalvik虚拟机而不是标准的java虚拟机,所以“原生”的 jar包不能直接在Android上跑) 然后当我把所有的jar包转换后拷贝到已有的那台Android平板上运行它们时却报出这样的错误: java.lang.unsupportedOperationException: can`t load this type of class file. 当时还以为是jar包转换时出错了,然后删掉了所有的包,重新下载重新转换,不料还是报这样的错。 纠结了一天后,也想到可能是因为art与Dalvik模式的问题。于是把同样的jar包拷贝到自己的Android手机(4.4.4版本运行于dalvik模式)上居然顺利运行了。然后把手机调为art模式再次运行jar包就又报平板上的报出的错误。 ART(Android Runtime) ART 是一种执行效率更高且更省电的运行机制,ART模式在Android

学习:Android环境搭建

吃可爱长大的小学妹 提交于 2020-03-28 05:15:27
引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教。 在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld。本文的主题如下: 1、环境搭建 1.1、JDK安装 1.2、Eclipse安装 1.3、Android SDK安装 1.4、ADT安装 1.5、创建AVD 2、HelloWorld 1、环境搭建 1.1、JDK安装 如果你还没有JDK的话,可以去这里 下载 ,接下来的工作就是安装提示一步一步走。设置环境变量步骤如下: 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: JAVA_HOME值为: D:\Program Files\Java\jdk1.6.0_18( 你安装JDK的目录 ) CLASSPATH值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin; Path: 在开始追加 %JAVA_HOME%\bin; NOTE: 前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。 安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version

Android Framework 初探

别来无恙 提交于 2020-03-28 05:13:40
最近工作任务不忙,学习一下Android Framework方面的知识。 一、介绍,是什么 Android的Framework是直接应用之下的一层,叫做应用程序框架层。这一层是核心应用程序所使用的API框架,为应用层提供各种API,提供各种组件和服务来支持我们的Android开发,包括ActivityManager,WindowManager,ViewSystem等。下面贴一张学习Android时常见的Android系统架构图: 二、有什么 Android Framework框架包含了3个主要部分:服务端、客户端、Linux驱动。 首先介绍一下服务端都有哪些重要的东西: ActivityManagerService(Ams):负责管理所有应用程序中的Activity,它掌握所有Activity的情况,具有所有调度Activity生命周期的能力,简单来说,ActivityManagerService是管理和掌控所有的Activity. WindowManagerService(Wms):控制窗口的显示、隐藏以及窗口的层序,简单来说,它就是管理窗口的,大多数和View有关系的都要和它打交道。 KeyQ类:它是Wms的一个内部类,一旦创建就会启动一个新线程,这个线程会不断地接收和读取用户的UI操作消息,并把这些消息放到消息队列QueueEvent中。

Android简明开发教程十五:RadioButton 多边形及路径绘制

吃可爱长大的小学妹 提交于 2020-03-27 17:10:02
这个例子是绘制多边形,多义形和路径,采用单选钮RadioButton来选择Polys 和Path示例: UI 设计为 上部分用来显示绘图内容,下部分为两个单选按钮 Polys ,Path。这样layout就和main.xml 不一样,main.xml只含一个com.pstreets.graphics2d.GuidebeeGraphics2DView。因此需在res/layout下新建一个polys.xml: <?xml version=”1.0″ encoding=”utf-8″?> <LinearLayout xmlns:android=” http://schemas.android.com/apk/res/android ” android:orientation=”vertical” android:background=”@drawable/white” android:layout_width=”fill_parent” android:layout_height=”fill_parent”> <com.pstreets.graphics2d.GuidebeeGraphics2DView android:id=”@+id/graphics2dview” android:layout_weight=”1″ android:layout_width=”fill_parent

[Android]Android高级UI开发系列教程(一) - Android拖拽教程

给你一囗甜甜゛ 提交于 2020-03-27 17:05:58
教程索引 Android 拖拽(Drag and Drop)教程 Android 绘制(Drawables)教程 Android 样式和主题(Styles and Themes)教程 Android 动态壁纸(Live Wallpaper)教程 Android 主屏幕小部件(Homescreen Widgets)教程 Android 自定义视图(Custom Views)教程 Android 支持不同大小屏幕(Support different screensize)教程 Android 动画(animations)教程 Android 触摸(Touch)教程 Android 拖拽教程 开发环境: Eclipse 3.7(Indigo) 、Java 1.6 和 Android 4.0(Ice Cream Sandwich) 前言: Android 4.0 开始支持视图(Views)的拖拽。你需要在视图(View)上注册一个监听器(Listener),比如 OnTouchListener 或者 LongClickListener,并且需要定义一个视图(View)作为拖拽的目标视图对象,比如 拖放区(drop zones)。下面我们通过两段代码来学习一下。 第一段代码我们定义一个视图,你可以拖拽该视图

打造亿级日活SDK的十大常见问题及解决方案

半城伤御伤魂 提交于 2020-03-27 10:53:44
3 月,跳不动了?>>> 一个好的SDK应该具备易用性、稳定性、轻量、灵活的特点,而个推作为国内第三方推送市场的早期进入者,一直致力于为开发者提供高效稳定的推送SDK。 经过十年的深耕与创新,个推夯实了行业地位。截止2019年6月,个推SDK累计安装量超440亿,日活独立设备数达4.3 亿,并成功服务了人民日报、新华社、微博、马蜂窝、酷我音乐等一系列明星APP。辉煌数据的背后是强大的技术支撑。 这期文章,我们特地采访了个推Android 资深开发敬瑜,以个推推送SDK为例,来聊聊打造大型SDK的关键技术点。 作者 个推Android 资深开发 敬瑜 01 开发 SDK 和 开发APP 有什么联系? APP 和 SDK两者关系密切,APP是SDK的主要载体, SDK 则是 APP开发所需的重要工具。从研发者的角度来看,SDK开发和 APP开发均属于 Android 顶层应用开发,并无本质区别,两者的目的均是要提供产品给客户使用;但从商业角度来讲,APP 是to C 的产品,用户是广大群众;而 SDK 则是to B 的产品,用户为广大开发者,两者在运营模式上有所不同。 02 SDK 开发最关键的点是什么? SDK没有UI交互,用户使用 APP 时并不会感知到SDK 的存在。但是作为APP的重要部分,SDK的性能直接影响着APP的性能,也间接影响着用户在使用APP时的体验和感受

android onNewIntent

为君一笑 提交于 2020-03-27 10:19:56
pendingIntent字面意义:等待的,未决定的Intent。   pendingIntent对象,使用方法类的静态方法 :       getActivity(Context, int, Intent, int) -------> 跳转到一个activity组件、      getBroadcast(Context, int, Intent, int)------>打开一个广播组件     getService(Context, int, Intent, int) --------> 打开一个服务组件。   分别对应着Intent的3个行为和参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。   pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。 主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。 intent英文意思是意图

Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)

依然范特西╮ 提交于 2020-03-27 05:48:37
http://iandroiddev.com/post/2012-06-06/40028637105 在开发一些系统应用的时候,我们会用到Android的剪贴板功能,比如将文本文件、或者其他格式的内容复制到剪贴板或者从剪贴板获取数据等操作。 Android平台中每个常规的应用运行在自己的进程空间中,相对于Win32而言Android上之间的进程间传递主要有IPC、剪切板。当然今天我们说下最简单的ClipboardManager。使用剪切板可以直接实现数据的传输。整个实现比较简单,注意剪切板中的类型判断。 使用起来很简单,系统给我们提供了很方便的接口,如下文本信息复制如下所示: //获取剪贴板管理服务 ClipboardManager cm =(ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); //将文本数据复制到剪贴板 cm.setText(message); //读取剪贴板数据 cm.getText(); public void setClipboard(String text) { ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); clipboard

Flutter插件开发例子分享到facebook和twitter

十年热恋 提交于 2020-03-26 16:50:25
https://segmentfault.com/a/1190000018806329 请看原文更详细: http://tryenough.com/flutter-plugin-share 这个活生生的例子会教你开发flutter插件,功能是封装Android和iOS端的分享到facebook和twitter的flutter接口。使用的分别是两端的系统分享功能,不需要集成facebook和twitter 的 sdk。 例子插件网址: https://pub.dartlang.org/packages/flutter_share_go#-readme-tab- 展示一下样式: ios 中分享到facebook: android中分享到facebook 请看原文更详细: http://tryenough.com/flutter-plugin-share 开始开发插件 步骤一:创建插件项目 这里用的Android studio创建的项目,可以直接创建flutter plugin项目,你也可以用命令创建: flutter create --org com.example --template=plugin "plugin_name" 将上面的“plugin_name”换成你的插件名字就行了,我这个插件名字叫flutter_share_go,所以命令就是: flutter create -