android知识大纲

来源:互联网 发布:淘宝介入买家都能赢吗 编辑:程序博客网 时间:2024/05/21 06:56

适合初学者

只要有activity中有

<intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>

就会生成一个快捷图标,并且是activity的入口。
所以如果想要改写图标的名字 在 activity中加入lable 即可。如果想该图标 只要加上ico 即可

页面间的跳转都是用 Intent

  ○ 在意图过滤其中   完全匹配才可以跳转  如果有多个action 和多个date只要与其中一个匹配就可以了。  ○ 显示跳转  setClass   /setClassName  ○ 隐示跳转  setAction () action在activity 的清单文件中设置      ■ action       ■ category 默认为Default      ■ data   (activity中数据传递)          ● scheme 前缀:   (例如 打电话  Uri.parse="tel:110")就是前缀包括冒号          ● mainType 定义数据类型 如果时图片 img  text/password (如果 scheme 和type 都有 在匹配的时候必须使用 setDataAndType())      ■ 跳转代码中 要写上 setAction  和setCategory  (系统会自动添加默认的Category 如果不是默认的 就要写上。)      ■ 只有都匹配才会跳转      ■ 数据之间的获取 被跳转的 可以getIntent  调用getDate

在指定类名时如果包名在与应用包名一致 可以写成 .类名 但是在显示跳转的时候必须写全。

startActivity 在显示跳转的时候 会在所有的应用清单文件中去找有没有一个activity的一个action与之匹配

隐士 和显示 的应用场景

  ○ 显示 在同一个应用中的的跳转  ○ 隐式  启动不同应用

activity的生命周期

  ○ oncreate   创建一般进行一些初始化  ○ onstart  被用户可见 但是没有交点  (不能交互)  ○ onResume 获得焦点   即  前台应用  ○ onPause 失去焦点但是依然可见  ○ onstop  不可见  即 后台    ○ on destory  销毁  点击返回     ○ 注意:在内存不够时会自动杀死 后台程序。

Activity 的启动模式

  ○ task stack 任务栈  ○ 1.singleTop 如果栈顶时该activity 就不会在创建只有不是的才会创建。  ○ 2.singleTask 不再栈顶但是之前有调用过 则返回  ○ singleInstance : 该activity 启动时会在一个新的任务栈中启动(一个栈中只有它和在一个项目中的非singleinstace activity ) 只要时单例 就会在新的栈中启动。 如果不是单例 不同的应用调用 会创建多个。  ○ 如果是有很多地方会调用的activity会用单例。

横竖屏切换 会自动调用生命周期方法 如果想让不掉用 可以在清单文件中activity中 configChange=”orientation|keyboardHidden|screeSize” (横竖屏切换宽高改变不要理会)

  ○ 写死横屏  screeOrientation="landscape"  ○ 写死竖屏 screeOrientation=“protrait”

activity返回时返回数据

      ■ 前提启动      ■ 该活动的时候要使用startActivityForResult(int)  ○ 返回方会在销毁之前吧数据返回给调用自己的activity不管你怎么销毁。  ○ intent data=new intent();  ○ data.putExtra();  ○ setResult(0,data);  ○ finish() 销毁 当前   相当于点击返回 返回点击也是调用这个方法  可以复写一个返回的方法,来改变。(返回键盘点击触发的方法是 onBackPressed())      ■ 接收方  重写 onActivityResult(int    ,int   intent Data)

四大组件都是要在清单文件中进行配置的。四大组件都是一个类。

广播接收者

  ○ 创建类  继承 BroadcastRceiver  ○ 注册 <receiver></>  ○ 接收的类型      ■ <intent-filter><action android:name="  .action."/></>   这里的action都定义好了。接收的是别人的广播  接收的action 和广播的action  必须匹配。  ○ 在打电话 接收可以获得打出去的电话号码   getResultdate

SharePreferences sp=getSharedPreferences(“ip”,MODE_PRIVE) 将数据保存在本地下次可以直接用。 sp.edit().putString(“ipNumber”,string).commit(); 获取的时候 ip相当于文件名 context.getSharedPreFerences(“ip”,context.MODE_PRIVE).getString(“ipNumber”);

广播的工作过程 打电话 将电话号码广播 接收者拦截修改 再次广播 。(这里的广播接收者肯定有先后顺序 也不是传统的广播 和网页中的过滤器一样 do.chain())

广播是通过intent 实现发送的。所以内容在intent zhong

广播接收者4.0至少要启动一次才会起作用 (点击图标) 手动关闭以后广播接收者不会起作用。、

startActivity 有一个设置 setFlag 是 创建一个任务中来存放 activity 一般用于广播接收者 启动一个项目 因为现在还没有一个任务栈可以放activity (如果不是开机启动是另一个程序发送广播呢启动还要用这个码。)

勒索软件可以通过其他的广播来停止。

软件图标是因为activity中有inter-filter 如果删除就没有图标了。

服务

  ○ 进程优先级   empty  background  service visible 前台进程  ○ 服务依赖于进程  并且不是独立的进程而是依赖于创建服务的进程。  ○ 系统如果将服务杀死 在内存充足的时候会再次重启。

绑定服务的执行流程

  ○ bindService 一旦执行会调用 onBind 方法 就会返回 IBinder对象(中间对象用于调用服务中的方法的)如果服务还没开起 会先调用 create()方法

startService 和 bindService 都会调用create 之间的区别是:

  ○ start 开启一个服务进程。bind不是。  ○ bind 与当前的 activity的生命周期一致。  ○ 所以一般在bind 之前要调用start        unbind  destory

广播接收者有两种 注册方法

  ○ 清单文件中  (解除方法为1.删除应用2.手动到设置中停止。)  ○ 动态注册 (一般oncreat方法中 比如服务开启时监听广播   或者 应用开启时在Mainactivity 中oncreat)      ■ 一些广播接收只能在代码中注册           ● 屏幕锁屏和解锁          ● 电量改变

服务的分类

  ○ 本地服务  ○ 远程服务      ■ (如果调用其他程序服务 没有启动服务怎么办?)//脑残问题 远程调用是通过 绑定得到对象 调用的方法  bind 如果服务不存在会创建。

样式表 (按钮 字体 文本框)

  ○ style.xml  ○ 在values 中更改  
   <style name=""><item  name="android:layout_width">wrap_content<item>........</> 
  ○ 继承      ■ <style name=""  parent=""> 继承方法<item 加上自己的新样式 相同的样式会覆盖。      ■ <style name=" a.b">  b 继承了a  在使用的时候   style="@stle/a.b"

多媒体编程

  ○ 图片大小的计算        ■  bmp 位图  bitmap      ■ 图片的大小=图片的总像素*每个像素占用的大小      ■ jpg 有损压缩  把相邻的颜色用一个标示  bmp 无损压缩  ○ 加载图片      ■ Bitmap bm=bitmapFactory.decodeFile();一个路径      ■ iv.setImageBitMap(bm)      ■ 加载图片时 会把所有的颜色信息存储在内存中 是以 ARGB保存的      ■ 图片的缩放  因为手机屏幕就那么大没必要加载很多的像素          ● 手机  320*480           ● 图片 2400*3200          ● 2400/320=7   3200/480=6   缩放大的应为缩放小的有一边是超过的。          ● Options opt=new Options(); //解析图片时需要用到的参数都封装在这个对象里的          ● opt.inJustDecodeBounds=true // 不会为请求的图片申请内存 去保存像素信息  但是请求了图片的属性信息 从而进行缩放(但是 Bitmap 返回的是null)              ○ opt.outWidth  opt.outHeight              ○ 获取屏幕的宽高                  ■ Display dp=getWindowManager().geDefaultDisplay();                  ■ dp.getWidth(); dp.getHeight();              ○ opt.inSampleSize              ○ opt.inJustDecodeBounds=false 这样就请求图片了。      ■ 图片更改           ● bitmap  是只读的不能更改。

触摸监听

  ○ setOntouchListener(new OnTouchListenner(){  onTouch(View v,MotionEvent event)})  ○ event.getAction 可以获得动作      ■ DOWN  触摸      ■ MOVE 滑动      ■ UP  离开      ■ event.getX()  getY ()获得坐标  ○ onTouch方法返回 如果是false 触摸事件不处理   true 触摸事件全部手工处理 false的话会传递给  调用触摸事件的父节点   (imageview  在 Linlayout里面 如果想给 Linlayout处理 就设置为false)  ○ 图片画  copy.drawLine     ○ 设置透明 copy.setFixel(x,y,Color.TRANSPARENT)

sd卡每次启动的时候会遍历一边,把所有多媒体文件都 在数据库中保存索引。(文件按的路径 大小 长度 艺术家)

图库系统中的图库 音乐 视频 是从数据库中 读取的(mide库中的索引)每次打开图库。。显示的是数据库中的数据 而sd卡遍历 只有收到广播 重启手机。

  ○ Intent intent =new Intent();  ○ intent.setAction(Intent.ACTION_MEDIA_MOUNTED)  ○ intent.setDate(Uri.fromFile(Enviroment.getExternalStorageDirectory()))  ○ sendBroadcast() 发送无序广播

获取sd卡路径

  ○ Enviroment.getExternal

获取文件的路径

  ○ 文件默认的路径是 date/date/包名/files/  ○ Context.getFileDir  返回的就是默认路径。

消息队列 刷新UI 消息给主线程处理 //static 如果其他地方要用

  ○ 消息处理器 队列主线程中都有所以只要发送过去就行了  ○ Hander hander=new Hander(){//用handler 来发消息  ○ public void handleMessage(android.os.Message msg){  ○ Bundle b=msg.getDate();  ○ bundle.get  ○ }  ○ }  ○ handler.obtainMessage();  ○ msg.obj  或者 传递   new Bundle()  put   ○ handler.sendmessage();

数据库的操作

  ○ extends SQLiteOpenHelper{  ○   ○ }  ○ 

类容提供者

  ○ 为了访问系统数据库(为了吧私有数据暴露给其他数据 其他程序只要访问类容提供者就好了)  ○ 系统中的数据必须使用类容提供者。(短信 联系人)  ○ 自定义类容提供者      ■ 

帧动画

  ○ 放在drawable 文件中  ○ 配置xml 文件  ○ imageView 中显示动画  ○ iv.setBackgroundResource(R.drawable.frameimation)  ○ (animationdrawable)iv.getBackGround

bat windows 下的批处理文件 。sh 是linux 中的处理文件

JNI

  ○ 堆栈    数据结构      ■ 栈  int i    person p;    指针              ● 存储 静态内存  static  全局          ● 先进先出          ● 由操作系统自动分配      ■ 堆   malloc  / new    空间大             ● 动态内存          ●  队列  先进先出          ● 又程序员 分配释放  ○ 交叉编译      ■ 源代码  编译  链接  可执行程序      ■ 交叉编译就是 模拟其他频台的特性  ○ 交叉编译工具链      ■ 多个工具的集合  ○ 常见工具      ■ NDK:开发JNI 模拟其他平台编译代码      ■ CDT:C/C++       ■ cygwin:linux和 windows   ○ 使用C写的方法      ■ c源代码放在 JNI 文件中      ■ 在本地定义一个方法;public native String func(); 没有方法体。方法体由 C实现。      ■ c代码      ■ 类型 要参考 NDK 中的 转换类型  String  -  jstring
0 0
原创粉丝点击