Acitivity创建与配置

本文深入探讨了Android应用开发中的Activity创建与配置方法,包括如何在Activity中展示视图和处理用户交互,以及AndroidManifest.xml文件在描述组件、权限和安装位置等方面的关键作用。
•Activity的创建和配置
–Activity提供了和用户交互的可视化界面。创建一个Activity一般是继承Activity(当然也可以继承ListActivity、MapActivity等),覆盖Activity的onCreate()方法,在该方法中调用setContentView()方法展示要显示的视图,调用findViewById()方法实例化组件。注意Activity只有在清单文件中声明才能使用。
–AndroidManifest.xml位于整个项目的根目录,描述了package中暴露的组件(activities、services,等等),他们各自的实现类,各种能被处理的数据和启动位置。除了能声明程序中的Activities、ContentProviders、Services和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)。

<manifest  xmlns:android="http://schemas.android.com/apk/res/android"

          package="com.lovo.test"

          android:sharedUserId="string"

          android:sharedUserLabel="string resource"

          android:versionCode="integer"

          android:versionName="string"

          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >

</manifest>


xmlns:android 

定义android命名空间,一般为http://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。

*package

指定本应用内java主程序包的包名,它也是一个应用进程的默认名称

sharedUserId

表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。若要共享数据,第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。

*versionCode

是给设备程序识别版本升级用的,必须是一个interger值代表app更新过多少次,比如第一版一般为1,之后若要更新版本就设置为2,3等等。

*versionName

个名称是给用户看的,你可以将你的APP版本号设置为1.1版,后续更新版本设置为1.2、2.0版本等等。这

installLocation

安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:internalOnly、auto、preferExternal

选择preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)

选择auto,系统将会根据存储空间自己去适应

选择internalOnly是指必须安装到内部才能运行

(注:需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP最好安装在SD卡上。现默认为安装在内部,如果把APP安装在SD卡上,首先得设置你的level为8,并且要配置android:installLocation这个参数的属性为preferExternal)

<application  android:allowClearUserData=["true"| "false"]
             android:allowTaskReparenting=["true" | "false"]
             android:backupAgent="string"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:enabled=["true" | "false"]
             android:hasCode=["true" | "false"]
             android:icon="drawable resource"
             android:killAfterRestore=["true" | "false"]
             android:label="string resource"
             android:manageSpaceActivity="string"
             android:name="string"
             android:permission="string"
             android:persistent=["true" | "false"]
             android:process="string"
             android:restoreAnyVersion=["true" | "false"]
             android:taskAffinity="string"
             android:theme="resource or theme">
</application>




Android应用中,如果你想要从一个Activity(Activity A)向另一个Activity(Activity B)传递数据,并在Activity B处理完后返回数据给Activity A,通常会涉及两个过程:传入数据(Starting an Activity with Data)和获取结果(Receiving a Result from an Activity)。 **传入数据(Starting an Activity with Data)**: 1. **通过Intent传递数据**: 在Activity A中,创建一个新的Intent,设置ACTION、添加数据或 extras。例如: ```java Intent intent = new Intent(A.this, B.class); intent.putExtra("key", "value"); // 传递字符串数据 startActivity(intent); ``` 2. **启动模式**: 确保在启动模式中选择支持返回结果,如 `FLAG_ACTIVITY_NEW_TASK` 和 `FLAG_ACTIVITY_FORWARD_RESULT`。 **获取结果(Receiving a Result from an Activity)**: 1. **声明ActivityResult**: 在Activity B中,声明一个或多个可能的requestCode,如 `setResult(int requestCode, Intent data);` 2. **处理回调**: 在`onActivityResult()`方法中处理返回的结果,根据requestCode判断返回的数据。例如: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == YOUR_REQUEST_CODE && resultCode == RESULT_OK) { String value = data.getStringExtra("key"); // 处理接收到的数据 } } ``` 3. **关闭并返回**: 当完成数据处理时,调用 `finish()` 结束Activity B,同时通过 `setResult()` 返回数据。 **相关问题--:** 1. 除了Intent,还有哪些方式可以在两个Activity之间传递数据? 2. 如何避免ActivityB被系统自动销毁,以便接收到ActivityA的返回结果? 3. 在异步任务中如何处理Activity之间的数据传递和结果返回?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值