android 体系结构。
binderdriver(ipc),安卓为linux新加的轻量级进程通信机制,免去传统线程进程通信的麻烦。
jni,j**a与c++的通信,j**a要调c++在android上,ndk编译成。so的c++库,让j**a调用。
android对屏幕分辨率需要特殊处理。
环境的搭建:
1、jdk的安装,因为运行android的ide,eclipse,需要用到jdk.
2、android developer tools adt 即是android在eclipse的开发插件。
3、eclipse->preferences ->android-> location 导入sdk
4、**d(android visual device )虚拟设备。
windows /show view
allocation tracker 检测内存泄露。(android 的j**a会出现内存泄露,如对象的引用造成环链,则j**a的自动释放机制永远释放不了这个对象)。
layout view 看当前屏幕有那些视图构成的。
logcat 看错误日志。**中 log(tag,”xxxxxxxxxxxxxxxx”);tag 即作为logcat的过滤器标识。
先把环境搭起来,一切都简单了”
1、 new **d (android sdk and **d manager)
android lcd density 160 比较标准的,很细腻的屏幕则为240)
2、启动**d
3、new android project选择一个版本的api,大多数是往下兼容的。
package name 倒着写域名的方式写,如
create activity ? 什么概念?
min sdk version 往下兼容的版本号。
4、自动build ,可以先clean
5、run as ->目标avddebug as )调试。
native month 即c的**。jar 即j**a的库。
密度不同,会自动生成不同的资源 。所以工程的res目录下,有很多文件。res/dranable名称固定,默认的**目录。不同的,可以在后面加后缀。
android 的四大概念。
activity : 活动块,上有很多窗口,窗口上又有很多view。每个小控件都是一个view
activity 的生命周期,oncreate()-onstop()-ondestroy()
onresume()-onpause()这两个相当于一个进程的暂停与恢复。
activity是系统对其管理的,是用栈来管理的,先进后出,栈顶可见。
activity之间的通信(intnet)可以用于同一进程内的通信,也可以用于跨进程的通信。
类似于信使,intent类是用来与其他程序通信的,获得一个activity,然后启动起来。调用别人,android定义了很多内置的action。复杂的数据则放在包裹(bundle)中,简单数据直接用键值对传送。
收数据时,用getintent()得到一个对象。通过取键值对,或取bundle得到数据。
context很重要,四大组件都继承于他,所以,可以直接用父类的方法,intentfilter可以过滤。
service : 服务
是一个后台线程,在一个context对象中来启动。
返回service对象 。再操作service3用于后台处理。免得占前台ui,如**上传。默认线程即ui线程,若等5秒以上,则会出现unr,提示是否等待。
当然也可以用后台线程代替service,但service可以放到另外的进程中去,更安全。
service的好处:
1、 可以依赖现有的binder机制。
不需要在应用层上,处理线程间的同步的工作。binder是android linux kernel写的。组件。
binder可以(1)用于同进程内部通信。
2)跨进程通信与同步。
2、service可以放在独立的进程中,所以更安全。
3、系统重启service即可,不影响主进程。
是否用service还是工作线程,是一个取舍问题,如一个listview下**,则没必要启动service,直接用线程即可。
本地service(即同一进程中)与远程service(在另一进程):
1、 本地的service在同一进程内,可直接函数据调用。不用ipc。
2、 与远程service通信,一般用binder。(aidl远程service中用到,ipc调用,实现aidc即可) 。
3、本地service容易调试。
4、本地service死掉,会影响activity.
远程service的定义,在中加入:
binder in action:
进程a调进程b 的service,返回一个代对象。可以传对象过去,通过分析成os能理解的,到了b进程那边,再组装成对象。给b进程的service接收。
返回时过程刚好相反。binder成功会**函数据中,传入service对象。
这样的调用,相当于可以传对象像调本地的对象一样,事实binder做了很多组装,binder driver干这个事的。
注意:ui中的text,要写在中,而不要直接在ui中改,否则可能会编译出错。
broadcast: 广播。
广播,用于进程间的通信,系统广播与自定义广播,如注册一个监控电量变化的广播,优先接听即拦截了。
status notification bar(在顶端显示通知)/ toastnotification(屏幕上显示提示)
sendbroadcast(intent )发送广播。同一个activity内,即同一个类内,发广播没意思。所以常用的是给其他的apk程序发广播。
content providers: 系统提供的一些环境的东西。如**本等。
**本的共享,系统中的资源共享,如有多少个音频文件。
android project下的目录介绍。
是自动生成的。不可以手工改。
res/layout 放界面的,就是一个xml文件,表达界面,gui程序,linear layout 布局方向。在android中setcontantview(
也可以在**中直接写。如动态运行的时候才知道宽高的。
button b = new button(this);
setcontentview(b);
90%的情况会利用第一种方式。
res/values 默认语言,values后可以加后缀,这样的话就成多语言版本了。
res/anim配置动画,formaplha = 0.” toalpha = 1.0”
android 这样的标识是android 内部定义的值。
res/menu 放菜单。
res/raw 什么都可以放,程序能解释就行了。
res/xml 也是一个activity
assets /fonts放字体。
res/ 非常重要。
定义版本号,可以与其他程序共享id ,达到高优先级权限。install location 限安装在**,sd卡?还是系统里?
min sdk 指定为8,不指最大。有很多activity 的情况下,可以配置哪些显示,即过滤,intent进程间传递信息的桥梁。startactivity(xxx); 可以调用对方的模块。
应用程序之间的相互activity调用。一个应用程序可以有多个,一个或没有activity.
工具的使用。
这个**上有好多介绍,android开发工具专题)。
adb 直接在真机上调试,运行速度会快速一些,(android debug bridge),此驱动在android 的sdk里会有usb drivers
手机上也要设置成可调试功能。即application \ development \ usb debug \ 打开。
有可能版本不一致之类的,导致连不上去,目标机上调试。
ddms = dalvik debug manger service )中的东西 。
1、 mat 看dump文件,查内存泄露的,eclipse 的mat 插件。
2、gc是垃圾**。
3、start moeth profile 性能分析文件。
4、模拟器可以模拟来电与短信等。emulator control
5、adb 在sdk包中的工具。如 adb shell 登录到linux上去,模拟器实际运行了一个linux,也可以在eclipse的file explorer查看。通过push,put读写文件。
文件 drawpath . 这种文件边框不让拉伸,只可以中间拉伸,所以做出来的**,适用很多分辨率的button.
android 用的数据库,sqlite,可以用sqlite gui 工具来查看数据库。方便。
在file explorer中的push出数据库文件,然后,可以查看里面的数据。
好工具,会大大提高开发效率。初学者,往往不知道哪些工具可用”。
traceview 可以用来查找可优化处。
layout view 看程序的构成。
monkey用来做测试,如压力测试等。
apk反编译,可以看别人的**怎么写的。
sdk包中的img文件,会挂载成yaffs2文件系统。模拟器里执行的都是img文件挂载的,还有jar 还有一些**。
实践1ctrl + f 格式化**。
res/layout文件,可以有可视化的拖拉控件,然后再格式化一下对应的xml**。
button跳转页面。package import import import import import public class demomain extends activity 在中增加。设置背景。在res里建drawable的文件夹,把背景 放到文件夹中,在布局中输入android bac... code jdk net io 本地文件。j a class jvm dvmc c j a 900万人 j a android应用开发 app android系统开发。android移植开发。flv rmvb mp4 3gp 1.android源码,修改libraries,c 写插件 flv j a... android中调用activity的常用的纯背景颜色有 如图 开始动画 帧动画 第一种方式启动帧动画 在activity启动时会自动运行动画 animationdrawable ad imageview iv imageview findviewbyid animationdrawable 当一个...android笔记
android笔记
android笔记