第五章 剖析Android应用程序
5.2使用应用程序Context
5.2.1获取应用程序context
Context context = getApplicationContext();
5.2.2context作用
1.获取应用程序资源
2.访问应用程序首选项
3.管理私有的应用程序文件及目录
4.获取为变异的应用程序组件
5.获取系统服务
6.管理私有的应用程序数据库
7.使用应用程序权限
(因为Activity继承自Context类,所有可以用它来替代context类,但也不是所有情况下都可以)
5.2.3获取应用程序资源
使用context的getResources()函数来获取应用程序资源
例如:
String str = getResources().getString(ID);
5.2.4访问应用程序首选项
使用context 的getSharedPreferences()方法访问共享的应用程序首选项。
5.2.6
获取应用程序组件
getAssets()会返回一个AssetsManger实例, 它可以依照名称打开某个组件。
5.3使用Activity执行应用程序任务
5.32.使用Activity毁掉管理应用程序状态和资源
1.在onCreate()中初始化静态Activity数据
参数问Bundle对象,首次启动的Activity,该参数为空,如果Activity由于内存原因终止,该参数为Activity先前的状态信息。
2.在onResume()中初始化和接受Actiity数据
当Activity到达Activity栈的顶部时,该方法被调用。(用于启动音频,视频和动画)
3.在onPause()中停止,保存和释放Activity数据
切换Activity时,调用该函数。(凡是在onResume()中获取的资源,数据都需要在这释放)
5.使用onSaveInstanceState()将Activity状态存储至Bundle中
6.在onDestroy()中销毁静态Activity数据
销毁时调用该函数。(包括因为资源问题自动销毁程序)如果Activity被android操作系统终止,isFinishing()方法返回false.
5.4使用Fragment组织Activity组件
fragment拥有自己的生命周期。Fragment实例必须存在于Activity实例中。
5.5使用Intent管理Activity跳转
5.5.1使用Intent实现Activity之间的跳转
1.使用类名运行一个Activity
shiyong Context对象调用startActivity方法,参数是intent
例如:
startActivity(new Intent(getApplicationContext(), MyDrawActivity,class));
2.使用动作和数据创建Intent
一个Intent的含义大致理解为对“谁”(Uri所描述的资源)“做什么”(所要执行的动作)
3.运行其他程序的Activity
初始化时,程序可能只会启动自身包中的Activity.获得授权后,就可能运行外部的Activity.
4.使用intent传递附加消息
intent.putExtra("SomeStringData", "Foo");
在onCreate方法中
Bundle extras = getIntent().getExtras("SomeStringData",默认数据);
5.7接受和广播Intent
broadcastIntent() 来广播一个Intent对象
BroadcastReciever()广播接收器