Chapter1
1、Android 系统架构
Linux 内核层、系统运行库、 应用框架层(API)、 应用层
Linux Kernel \ Libraries、Android RunTime \ Appilication FrameWork\Application
2、Android 开发特色
四大组件、系统控件、SQLite数据库、地理位置定位、多媒体、传感器
Chapter2
1、代码隐藏标题栏 setcontentview之前 requestWindowFeature(Window.FEATURE_NO_TITLE)
2、menu onCreateOptionsMenu() res目录-new-folder menu
menu.xml type 选择menu <item android:id = xxx android:title = xxx />
getMenuInflater.inflate(R.menu.menu,Menu menu) return true; true表示允许创建的菜单 显示出来;false 创建的菜单将无法显示
onOptionsItemSelected(MenuItem item) switch(item.getItemId()) return true;
3、intent.addCategory(“xxxxx”);intent-filter 标签中 可以有多个 category
intent.setAction(Intent.ACTION_VIEW) \ intent.setData(Uri.parse("http://www.google.com"));
intent-filter data 标签 可以配置以下内容 android : scheme 用于指定数据的协议部分 如 http
android: host 用于指定数据的主机名称 如 www.google.com部分
android : port 用于指定数据的端口部分 一般紧随主机名后
android : path 用于指定主机名和端口名后面的部分
android : mimeType 用于指定可以处理的数据类型 允许使用通配符的方式进行指定
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name = ""android.intent.category.DEFAULT"/>
<data android:scheme = "http" />
</intent-filter>
4、
Intent intent = new Intent();
intent.putextra(xxxx,xxxx);
setResult(RESULT_OK,intent);
finish();
onActivityResult(int requestCode,int resultCode,Intent data)
5、任务(Task)活动(Activity ) 栈(返回栈) Back Stack
Android 是使用任务Task 来管理活动的。一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈。栈是一种后进先出的数据结构。
6、<activity android :name = "xxx" android :theme="@android:style/Theme.Dialog"></activity>
7、活动的启动模式
android:launchMode="singleTask"
四种启动模式:standard/singleTop/singleTask/singleInstance
standard:每次启动 都会新建一个新的实例 并入栈 处于栈顶位置
singleTop: 启动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的。如果不在栈顶,就会创建新的实例
singleTask 整个应用程序只有一个活动的实例 每次启动该活动 都会检查 返回栈中是否存在该活动的实例 ,如果发现 直接使用该活动的实例并 把在这个活动之上的所有活动 统统出栈。 onrestart
singleInstance 和其他程序共享该活动时 前三种启动模式是做不到的 因为 每个应用程序都会有自己的返回栈 ,同一个活动在不同的返回栈中必然是创建了新的实例 。而使用 singleInstance 启动模式的活动 会有一个单独的返回栈来管理这个活动,不管哪个应用程序来访问这个活动,都共用 一个 返回栈 ,也就解决了 共享活动实例 的问题。 getTaskId();
a--> b (singleInstance) --->c Log.d("a activity","Task id is "+getTaskId());
会发现 a 、c 都隶属于同一个 id 的返回栈 b是一个新的id 返回栈
然后从c开始返回键 : c---> a ----> b
a、c所在的栈 全部清空了 再去返回 b所在的栈 所以表现出来 cab 而非 cba
8、Log.d(“TAG”,getClass().getSimpleName());
9、随时随地退出程序
List<Activity> activities addActivity(Activity activity) removeActivity(Activity activity)
finishAll(){
for(Activity a : activites){
if(!a.isfinishing()){
a.finish();
}
}
}
10、启动活动的最佳写法
便于维护和调用 每个页面最好写好 包含该页面被启动时需要传递的参数 的启动方法
public class SecondAcitivity extends Activity
{
private static final String KEY_X = "XX";
private static final String KEY_Y ="YY";
public static void actionStart(Context context,String data1,int data2)
{
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra(KEY_X,data1);
intent.putExtra(KEY_Y,data2);
context.startActivity(intent);
}
}
CHAPTER 3