android架构

Android NDK开发入门实例

不羁岁月 提交于 2020-02-05 02:48:01
AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合。 注意 : AndroidNDK 只能用于 Android1.5 及以上版本中。 I. Android NDK 目标: Android虚拟机允许你的应用在源码中通过JNI调用本地代码(c/c++)中实现的方法们。概括起来,这表示: --你的应用的java源代码中要声明一个或多个方法,这些方法前面需有'native'关键字,这表明它们被本地代码实现。如: [java] view plain copy native byte[] loadFile(String filePath); --你必须提供本地的共享库(.so),库中包含这些方法的实现。这个库将会打包你的应用的.apk中。这个库的命名必须符合标准的Unix命名规则,也就是:lib<something>.so这种形式。并且还要包含一个标准的JNI入口。例如: libFileLoader.so --你的应用必须显式的加载本地库。例如,要在应用启动时加载,只需简单地在代码中增加如下语句: [java] view plain copy static{ System.loadLibrary( "FileLoader"); } 注意写库的名字时你不需要使用 'lib' 前缀和 '.so' 后缀。

王学岗csdn 移动架构————Android Binder机制

穿精又带淫゛_ 提交于 2020-02-04 02:29:51
看代码目录 服务端代码 // DNAIdl.aidl package com.dn_alan.service; // Declare any non-default types here with import statements import com.dn_alan.service.Person; interface DNAIdl { void addPerson(in Person person); List<Person> getPersonList(); } // DNAIdl.aidl package com.dn_alan.service; // Declare any non-default types here with import statements parcelable Person; package com.dn_alan.service; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException; import java.util.ArrayList; import java.util.List; public class DNAidlService extends

Android Jetpack架构组件之Navigation入门

混江龙づ霸主 提交于 2020-02-02 01:20:35
——沉默不是因为词穷,而是因为心空。现实有多残酷,你就应该有多坚强。 前言 一、简介 (1)是什么 (2)有什么用 (3)有什么优点 ​二、基本使用 (1)添加依赖 (2)创建navigation视图 (3)Activity中添加NavHost (4)代码实现导航功能 三、组件分析 四、进阶 五、内容推荐 前言 ——这篇主要是 梳理 一下Jetpack架构组件之一的 Navigation ,并结合楼主所学做个 总结 。面向那些还没接触 Navigation 的同学们。看完这篇可以快速了解它,并轻松使用。也想请教前辈们指点文章中的错误或不足的地方。本篇只描述 Navigation ,不会拓展额外的知识,若想了解更多关于Jetpack组件知识可以看楼主写的Jetpack专栏。 一、简介 (1)是什么 ——是Android Jetpack 中的导航组件,支持用户导航、进入和退出应用中不同内容片段的交互。 这是文档给的说法,描述简单。却不易理解,唯有使用过该组件的方可理解其深刻含义。 这里就不强行解释,待浏览完该文章再细品。 (2)有什么用 ——Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式。 (3)有什么优点 管理 Fragment 更加方便 更好的处理Fragment切换导航问题 该组件还可以支持抽屉式导航栏

主流 Android x86系统分享

被刻印的时光 ゝ 提交于 2020-02-02 00:59:45
前几年一段时间里比较流行安卓&win系统二合一系统,在整合了两个系统的同时价格还很便宜。可是很快就凉了,原因还是寨板居多体验差、各种配置和硬件方面偷工减料等等,但这个思路其实还是挺好的,可以让设备具有更广泛的用途。给手头上的win平板装个安卓系统,让它变成一个二合一平板。 一.系统选择 Windows运行安卓系统肯定要选Android x86,比使用安卓模拟器的效率高很多,在性能方面也不会受限。Android x86,是一个非官方开源项目,它的目的就和系统名称一样,让x86架构的设备也能体验到安卓系统。经过了几年的优化和完善,如今的Android x86已经有了很多版本,每个系统也有各自的特色,下面就来简单介绍几个主流的系统。 1.凤凰os&remixos 系统进行了一些定制和优化,用起来和win还有点相似。但体验不够好。 凤凰OS早在一年前就放弃跟进Android x86项目了,之后的更新更像是在优化广告,实际有用的驱动以及内核都没有变化,唯一值得称赞的就是系统内置的手游映射,可能对于一些手游玩家还具备一定的吸引力。 RemixOS团队在很久以前就去做商业项目了,几年前的公开版根本不具备什么可用性。 2.Android x86 Android x86是个非(google)官方项目,地址为: http://www.android-x86.org/

Android各种文件解析

爱⌒轻易说出口 提交于 2020-02-01 15:36:21
1.工程项目结构解析: 我们开发大部分时间都花在下面这个部分上: 接下来我们对关键部分进行讲解: java: 我们写Java代码的地方,业务功能都在这里实现 res: 存放我们各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件 1.res资源文件夹介绍: PS:说到这个 res目录 ,另外还有提下这个 assets目录 ,虽然这里没有,但是我们可以自己创建,两者的区别在于是否前者下所有的资源文件都会在R.java文件下生成对应的资源id,而后者并不会;前者我们可以直接通过资源id访问到对应的资源;而后者则需要我们通过AssetManager以二进制流的形式来读取!对了,这个R文件可以理解为字典,res下每个资源都都会在这里生成一个唯一的id! 接着说下res这个资源目录下的相关目录: PS: 下述mipmap的目录,在Eclipse并不存在这个,Eclipse中都是drawable开头的,其实区别不大,只是使用mipmap会在图片缩放在提供一定的性能优化,分辨率不同系统会根据屏幕分辨率来选择hdpi,mdpi,xmdpi,xxhdpi下的对应图片,所以你解压别人的apk可以看到上述目录同一名称的图片,在四个文件夹下都有,只是大小和像素不一样而已!当然,这也不是绝对的,比如我们把所有的图片都丢在了drawable-hdpi下的话,即使手机

android studio 创建项目的一些配置

时光毁灭记忆、已成空白 提交于 2020-02-01 05:44:51
build.gradle文件 1 apply plugin: 'com.android.application' 2 apply plugin: 'org.greenrobot.greendao' // 使用greenDAO 3 4 def static releaseTime() {//获取当前时间 5 return new Date().format("MMdd", TimeZone.getTimeZone("UTC")) 6 } 7 android { 8 compileSdkVersion project.ext.compileSdkVersion//引用统一配置 9 buildToolsVersion '28.0.3' 10 11 compileOptions { 12 sourceCompatibility JavaVersion.VERSION_1_8//支持java8 13 targetCompatibility JavaVersion.VERSION_1_8 14 } 15 16 defaultConfig { 17 applicationId "xx.xx.xx" 18 minSdkVersion project.ext.minSdkVersion 19 targetSdkVersion project.ext.targetSdkVersion 20

android面试注意点

こ雲淡風輕ζ 提交于 2020-01-30 01:44:10
Java 基础知识 面向对象的基本思想 Object类相关:Object类的几个关键函数、String涉及到的常量池概念,序列化 & 反序列化。 重要关键字:final、static。 内部类:内部类的分类、应用场景、内部类编译成class后是怎么样的。 抽象类 & 接口:区别、应用场景。 编码:编码的目的、分类。 异常:异常体系、自定义异常。 注解:注解的基本概念、分类、编译时注解 & 运行时注解。 容器:重要容器的内部实现、容器间的对比。 内存模型。 垃圾回收。 类加载的过程。 泛型:分类、通配符 & 上下边界、泛型擦除。 反射:使用。 Android 基础知识 Dalvik、Art虚拟机 Activity:生命周期、launchMode。 Fragment:生命周期、懒加载、两种Adapter之间的区别。 BroadcastReceiver:基本概念、广播分类、权限。 Service:生命周期、onStartCommand的返回值、startService和bindService的区别、相同进程 & 不同进程的交互、IntentService实现原理。 重要的工具类 & 源码实现:AsyncTask、HandlerThread、Handler、IntentService、LruCache、LinkedHashMap、SparseArray。 RecyclerView:缓存原理

如何使用意图将对象从一个Android活动发送到另一个?

柔情痞子 提交于 2020-01-29 08:06:54
如何使用 Intent 类的 putExtra() 方法将自定义类型的对象从一个 Activity 传递到另一个 Activity ? #1楼 感谢您的包裹帮助,但我发现了另一种可选解决方案 public class getsetclass implements Serializable { private int dt = 10; //pass any object, drwabale public int getDt() { return dt; } public void setDt(int dt) { this.dt = dt; } } 活动一 getsetclass d = new getsetclass (); d.setDt(50); LinkedHashMap<String, Object> obj = new LinkedHashMap<String, Object>(); obj.put("hashmapkey", d); Intent inew = new Intent(SgParceLableSampelActivity.this, ActivityNext.class); Bundle b = new Bundle(); b.putSerializable("bundleobj", obj); inew.putExtras(b);

如何给你的Android 安装文件(APK)瘦身

时间秒杀一切 提交于 2020-01-24 14:41:10
如何给你的Android 安装文件(APK)瘦身 本文翻译自: Putting Your APKs on Diet 原作者: Cyril Mottier Android的apk文件越来越大了这已经是一个不争的事实。在Android 还是最初版本的时候,一个app的apk文件大小也还只有2 MB左右,到了现在,一个app的apk文件大小已经升级到10MB到20MB这个范围了。apk文件大小的爆炸式增长主要是因为用户对app质量的期待越来越高以及开发者的开发经验增长,具体体现在以下几个方面: Android设备 dpi 的多样化 ([l|m|tv|h|x|xx|xxx]dpi) Android平台的进化,开发工具的改进以及开源类库生态系统的丰富 用户对高质量UI的期待 其他原因 Android开发者在设计一个app的时候应该将最终发布一个轻量级app作为一个最佳实践来考虑。为什么?首先这就意味着你拥有了一个简洁,易维护代码基础。其次,官方应用商店对超过50MB的apk设置了拓展包文件下载选项,apk文件在50MB以下更容易让用户下载。最后,我们的应用程序环境是一个带宽有限,存储空间有限的环境,apk安装文件越小,下载就会越快,安装也会更快,良性循环,最后说不定用户因为这个给好评。 在大部分情况下,apk大小的增长是为了满足消费者的需要和期待。然而

Android Bluetooth How To--Based on Android L Bluedroid

亡梦爱人 提交于 2020-01-24 01:47:24
Android Bluetooth How To(Based on Android L Bluedroid) 持续更新中… 1、How to enable btsnoop log?   a) UI Settings-->   b) Developer Options-->   c) reboot Tablet, then snoop log will locate in /sdcard/btsnoop_hci.log(this path can be configured in /etc/bluetooth/bt_stack.conf) 2、If developer options default not enabled, you can use following steps to enable it   a) Settings-->   b) About Tablet-->   c) Click 4 or 5 times or more in Build Number-->   d)then, Develop options will comeout--> Pls also be noted that how to enable Developer Options might depend on system and Android Versions 3、bluedroid