当前位置:文档之家› 安卓应用总结

安卓应用总结

安卓应用总结一、Activity类1、生命周期Android 定义了一系列与生命周期相关的方法,在我们自己的Activity 中,只是根据需要复写需要的方法,Java 的多态性会保证我们自己的方法被虚拟机调用(即回调方法)。

p ublic class OurActivity extends Activity {protected void onCreate(Bundle savedInstanceState);setContentView(yout.main); //设置界面布局protected void onStart(); //启动protected void onResume(); //进入界面之前protected void onPause();protected void onStop();protected void onDestroy();}onCreate==> onS tart() ==> onResume() ==> running ==> onPause() ==> onStop() ==> onDestroy()注:在这些生命周期方法中必须调用父类的该方法2、启动另外一个ActivityActivity.startActivity()方法可以根据传入的参数启动另外一个Activity:I ntent intent =new Intent(CurrentActivity.this,OtherActivity.class);startActivity(intent);注:OtherActivity同样需要在AndroidManifest.xml中定义3、Activity之间通信在Android 中,不同的Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。

因此我们需要一种特别的机制帮助我们在Activity 之间传递消息。

Android 中通过Intent 对象来表示一条消息,一个Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封Email,其中不仅应该包含收件地址,还可以包含具体的内容。

对于一个Intent 对象,消息“目的地”是必须的,而内容则是可选项。

Intent的中文意思是目的。

在Android中也是"目的"的意思。

就是我们要去哪里,从这个activity要前往另一个Activity就需要用到Intent。

发件人:(CurrentActivity类中)Intent intent =new Intent(CurrentActivity.this,OtherActivity.class);// 创建一个带“收件人地址”的 emailBundle bundle =new Bundle();// 创建 email 内容bundle.putBoolean("boolean_key", true);// 编写内容bundle.putString("string_key", "string_value");intent.putExtra("key", bundle);// 封装 emailstartActivity(intent);// 启动新的 Activity收件人:(OtherActivity类中)Intent intent =getIntent();// 收取 emailBundle bundle =intent.getBundleExtra("key");// 打开 emailbundle.getBoolean("boolean_key");// 读取内容bundle.getString("string_key");②使用SharedPreferencesSharedPreferences 使用xml 格式为Android 应用提供一种永久的数据存贮方式。

对于一个Android 应用,它存贮在文件系统的/data/ data/your_app_package_name/shared_prefs/目录下,可以被处在同一个应用中的所有Activity 访问。

Android 提供了相关的API 来处理这些数据而不需要程序员直接操作这些文件或者考虑数据同步问题。

// 写入 SharedPreferencesSharedPreferences preferences = getSharedPreferences("name", MODE_PRIVATE);Editor editor = preferences.edit();editor.putBoolean("boolean_key", true);editor.putString("string_key", "string_value");mit();// 读取 SharedPreferencesSharedPreferences preferences = getSharedPreferences("name", MODE_PRIVATE);preferences.getBoolean("boolean_key", false);preferences.getString("string_key", "default_value");4、Activity 的Intent FilterIntent Filter 描述了一个组件愿意接收什么样的Intent 对象,Android 将其抽象为android.content.IntentFilter 类。

在Android 的AndroidManifest.xml 配置文件中可以通过<intent-filter >节点为一个Activity 指定其Intent Filter,以便告诉系统该Activity 可以响应什么类型的Intent。

当程序员使用startActivity(intent) 来启动另外一个Activity 时,如果直接指定intent 了对象的Component 属性,那么Activity Manager 将试图启动其Component 属性指定的Activity。

否则Android 将通过Intent 的其它属性从安装在系统中的所有Activity 中查找与之最匹配的一个启动,如果没有找到合适的Activity,应用程序会得到一个系统抛出的异常。

①Action 匹配Action是一个用户定义的字符串,用于描述一个Android 应用程序组件,一个Intent Filter 可以包含多个Action。

在AndroidManifest.xml 的Activity 定义时可以在其<intent-filter >节点指定一个Action 列表用于标示Activity 所能接受的“动作”,例如:<intent-filter ><action android:name="android.intent.action.MAIN" /><action android:name="com.zy.myaction" />……</intent-filter>如果我们在启动一个Activity 时使用这样的Intent 对象:Intent intent =new Intent();intent.setAction("com.zy.myaction");那么所有的Action 列表中包含了“com.zy.myaction”的Activity 都将会匹配成功。

Android 预定义了一系列的Action 分别表示特定的系统动作。

这些Action 通过常量的方式定义在android.content. Intent中,以“ACTION_”开头。

我们可以在Android 提供的文档中找到它们的详细说明。

②URI 数据匹配一个Intent 可以通过URI 携带外部数据给目标组件。

在<intent-filter >节点中,通过<data/>节点匹配外部数据。

mimeType 属性指定携带外部数据的数据类型,scheme 指定协议,host、port、path 指定数据的位置、端口、和路径。

如下:<data android:mimeType="mimeType" android:scheme="scheme"android:host="host" android:port="port" android:path="path"/>如果在Intent Filter 中指定了这些属性,那么只有所有的属性都匹配成功时URI 数据匹配才会成功。

③Category 类别匹配<intent-filter >节点中可以为组件定义一个 Category 类别列表,当 Intent 中包含这个列表的所有项目时 Category 类别匹配才会成功。

5、一些关于Activity 的技巧①锁定Activity 运行时的屏幕方向A ndroid 内置了方向感应器的支持。

在G1 中,Android 会根据G1 所处的方向自动在竖屏和横屏间切换。

但是有时我们的应用程序仅能在横屏/ 竖屏时运行,比如某些游戏,此时我们需要锁定该Activity 运行时的屏幕方向,<activity >节点的android:screenOrientation属性可以完成该项任务,示例代码如下:<activity android:name=".EX01"android:label="@string/app_name"android:screenOrientation="portrait">// 竖屏 , 值为 landscape 时为横屏…………</activity>②全屏的Activity要使一个Activity 全屏运行,可以在其onCreate()方法中添加如下代码实现:// 设置全屏模式getWindow().setFlags(youtParams.FLAG_FULLSCREEN,youtParams.FLAG_FULLSCREEN);// 去除标题栏requestWindowFeature(Window.FEATURE_NO_TITLE);③在Activity 的Title 中加入进度条为了更友好的用户体验,在处理一些需要花费较长时间的任务时可以使用一个进度条来提示用户“不要着急,我们正在努力的完成你交给的任务”。

相关主题