Android笔记

发布 2021-05-12 00:05:28 阅读 4727

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**。

android笔记

button跳转页面。package import import import import import public class demomain extends activity 在中增加。设置背景。在res里建drawable的文件夹,把背景 放到文件夹中,在布局中输入android bac...

android笔记

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笔记

android中调用activity的常用的纯背景颜色有 如图 开始动画 帧动画 第一种方式启动帧动画 在activity启动时会自动运行动画 animationdrawable ad imageview iv imageview findviewbyid animationdrawable 当一个...