Android Application Fundamentals 学习笔记

1.android的每个应用程序都是编译到一个apk文件中执行
2.每个android应用程序运行时都在自己的沙箱中:
2.1 android系统是一个多用户系统,每个应用程序都是不同的用户。
2.2 每个应用程序都有自己的id,只能访问获得允许的文件。
2.3 每一个进程都有自己的虚拟机,所以每个应用程序都是相对独立的。
2.4 每个应用程序都有自己的linux进程。
   这样android系统遵循一个最小权限准则
3.不同的应用程序也可以共享数据或者访问系统服务:
3.1 两个应用程序可以共享一个linux用户id,同时享有相同的linux进程和虚拟机。
3.2 应用程序在安装时可以被使用者允许访问系统设备如通讯录,sd卡等。
4.应用程序组件,有四种应用程序组件,每种都有不同的目的和生命周期:
4.1 activities 一个activity代表一个有用户界面的屏幕,不会相互依赖。不同的应用程序只要有允许都可直接调用activity。
4.2 service 运行于后台用来执行长时间运行的操作或者为远程进程服务,不会有用户界面,可以通过activity来进行与用户的交互。
4.3 content providers 管理一组共享的应用程序数据,这些数据可以保存到其他的持久的设备中。如果允许,其他的应用程序可以查询或者修改这些数据。例如管理用户通讯录的content provider。一个content provider是作为content providers的子集来实施的
4.4 broadcast receivers 对系统广播回应的组件,许多广播都是起源于系统,如电池电量低、屏幕关闭、照相。应用程序也能初始化广播,如通知其他的应用程序数据已经下载完毕。broadcast receivers虽然没有用户界面,但是可以弹出通知来通知用户。
android系统的一个特别的方面是一个程序能够启动另外一个程序的组件,例如一个程序可以启动相机的activity来进行照相的操作。启动一个组件就要启动相应的程序的进程,实例化这个组件需要的类,并在所属的程序的进程中执行。所以android系统不会有一个单独的入口如main。一个程序要想访问另一个程序的组件必须向系统进行申请。
5.运行组件
四个组件中的三个(activities, services, and broadcast receivers)要通过叫做intent的异步信息来激活,intent把要激活的组件绑定到一起来激活,不管这些组件属于哪个程序。Intent是一个对象用于定义激活某一个组件或者某一类组件的信息,一个Intent可能是明确的或者含蓄的。content provider是作为ContentResolver的请求目标来激活的,ContentResolver处理所有的与content provider的直接交互。
intent的方法:startActivity()、startService()、sendBroadcast()、sendOrderedBroadcast()、sendStickyBroadcast();contentResolver的方法:query();
6.ManifestFile
系统通过读取AndroidManifest.xml文件可以知道有哪些组件存在,所有的组件必须在manifest文件中声明,manifest文件在工程的根目录中。
7.声明组件:
<activity> <service> <receiver> <provider>
Activities, services, 和content providers必须在manifest文件中声明的才可以运行,但是broadcast receivers可以通过在manifest文件中声明或者在代码中使用registerReceiver()来动态的创建。
8.声明组件权限
如果intent激活组件时有多个组件可以符合要求,这时要由用户来确定使用哪个。在manifest文件中声明组件时可以选择性的添加组件的权限通过intent filters:增加<intent-filter>元素作为组件的子元素。
9.声明程序要求
在manifest文件中你的程序必须声明可以在哪些设备中安装。
Screen size and density <supports-screens>、Input configurations <uses-configuration>、Device features <uses-feature>、Platform Version <uses-sdk>
10.程序资源
android程序不仅需要源代码,也需要图片声音等其他的资源,你可以定义一些animations, menus, styles, colors, and the layout of activity user interfaces通过xml文件。所有的资源sdk都会定义一个唯一的id,可以通过id调用,为不同的设备提供可选择的资源是将资源和代码分离的重要方面。
Tip: An easy way to add import packages to your project is to press Ctrl-Shift-O (Cmd-Shift-O, on Mac). This is an Eclipse shortcut that identifies missing packages based on your code and adds them for you.
Tip: Use the shortcut Ctrl-F11 (Cmd-Shift-F11, on Mac) to run your currently visible application.
new StringBuilder().append(mMonth + 1).append("-").append(mDay).append("-").append(mYear).append(" ")); }
webview:
1.AndroidManifest.xml中必须许可网络权限:android.premission.INTERNET
2.如果页面有Javascript,vebview必须设置支持:webview.getSettings().setJavaScriptEnabled(true)
3.如果页面中有链接,并且希望点击链接时在当前页面中刷新,而不是打开新的androidbrowser中打开,覆盖vebview的WebViewClient对象:
mWebView.setWebViewClient(new WebViewClient(){
});
4.不做任何处理时,点击系统的back会调用finish()结束浏览器,如果想要返回之前的网页,要在当前Activity中处理并消费掉该back事件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值