-
定义类继承Activity.
-
在AndroidManifest.xml文件中声明Activity信息.
<activity android:name="com.ycy.activitydemo.SecondActivity" > </activity>
-
在类中实现onCreate方法, 去设置布局
-
多个页面之间的跳转
-
显式跳转, 在可以引用到目标类的字节码文件的情况下使用. 一般用于在自己程序的内部. 显示跳转不可以跳转到其他程序的页面中.
-
隐式跳转, 可以在当前程序跳转到另一个程序的页面. 而且不需要引用那个类. 前提条件:必须知道另一个程序的页面的动作和信息.
-
另一个程序的页面在清单文件中给Activity添加一个动作 <intent-filter> <action android:name="com.ycy.second" /> //随便指定
<category android:name="android.intent.category.DEFAULT" /> // 指定传递的数据是以: money开头 <data android:scheme="money"/> // 指定传递过去的类型, 用于区分当前是什么操作. <data android:mimeType="com.ycy/mbx" />
</intent-filter>
-
-
-
打开浏览器页面
/*<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" /> <data android:scheme="https" /> <data android:scheme="about" /> <data android:scheme="javascript" /> </intent-filter>*/ Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.BROWSABLE"); Uri uri = Uri.parse("http://www.ycy.com"); intent.setData(uri); startActivity(intent);
-
打开系统短信发送的页面
/*<intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.SENDTO" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="sms" /> <data android:scheme="smsto" /> </intent-filter>*/ Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.BROWSABLE"); Uri uri = Uri.parse("sms:5556"); intent.setData(uri); // 使用intent传递数据 intent.putExtra("sms_body", "今晚7天假日酒店旁边的肯德基不见不散!!!"); startActivity(intent);
-
Intent传递数据.
- 可传递类型: 八大基本类型和数组, ArrayList, Bundle数据捆, 序列化接口(javabean)
-
人品计算器
-
Activity之间回传数据
-
使用startActivityForResult方法开启新的页面
-
在被开启的新的页面里, 调用setResult方法设置回传的数据. 设置完后不会立刻传递到前一个页面, 而是等待新的页面关闭后, 才回传.
-
回传给开启Activity的onActivityResult方法.
-
-
-
Activity生命周期
-
startActivity开启一个Activity时, 生命周期的过程是: onCreate -> onStart(可见, 但不可交互) -> onResume(可见, 可交互)
-
点击back键关闭一个Activity时, 生命周期的过程是: onPause(部分可见, 不可交互) -> onStop(完全不可见) -> onDestory(销毁了)
-
当开启一个新的Activity(以对话框形式), 新的activity把后面的activity给盖住一部分时, 此时,先前的activity的生命周期执行的方法是: onPause(部分可见, 不可交互)
-
当把新开启的Activity(以对话框形式)给关闭时, 此时,先前的activity的生命周期执行的方法是: onResume(可见, 可交互)
-
当开启一个新的activity把后面的activity完全盖住时, 此时,先前的activity的生命周期的方法执行顺序: onPause -> onStop(完全不可见)
-
当把新开启的activity(完全盖住)给关闭时, 此时,先前的activity的生命周期的方法执行顺序是: onRestart -> onStart -> onResume(可见, 可交互)
-
实际工作中使用的方法
- onResume 可见, 可交互. 把动态刷新的操作启动.
-
onPause 部分可见, 不可交互. 把动态刷新的一些操作, 给暂停了.
-
onCreate 初始化一些大量的数据.
- onDestory 把数据给释放掉, 节省内存.
-
-
横竖屏切换时, 生命周期, 默认情况:会把activity销毁再创建.
-
不让Activity销毁在创建:在清单文件中的activity节点中加入属性
-
4.0以下版本 android:configChanges="orientation|keyboardHidden"
-
4.0以上版本 android:configChanges="orientation|screenSize"
-
兼容所有版本 android:configChanges="orientation|keyboardHidden|screenSize"
-
-
-
指定Activity以对话框的形式显示, 在清单文件中,activity节点追加以下主题
android:theme="@android:style/Theme.Dialog"
-
任务栈, 用来提升用户体验的.
- 程序打开时就创建了一个任务栈, 用于存储当前程序的activity.
- 所有的activity属于一个任务栈.
- 一个任务栈包含了一个activity的集合, 去有序的选择哪一个activity和用户进行交互
- 只有在任务栈栈顶的activity才可以跟用户进行交互.
- 任务栈可以移动到后台, 并且保留了每一个activity的状态. 并且有序的给用户列出它们的任务, 而且还不丢失它们的状态信息.
-
退出程序: 把所有的任务栈中所有的activity清除出栈, 然后任务栈销毁.
-
问题:
- 用户体验差, 需要点击多次返回才可以把程序退出了.
- 数据冗余, 重复数据太多, 会导致内存溢出的问题(OOM)
-
Activity的启动模式, 在activity节点里指定launchMode的属性.
-
standard 标准模式(activity的默认模式), 导致上面的问题出现.
-
singleTop 单一顶部模式: 如果一个activity的实例已经存在当前任务栈的栈顶, 系统会发送一个Intent给那个实例的onNewIntent方法. 应用场景: 防止别的程序恶意打开我们的页面.
-
singleTask 单一任务栈模式: 如果activity的实例已经存在任务栈中, 系统就不会创建一个新的实例, 而是调用那个实例的onNewIntent方法, 并且把那个已经存在的activity 实例以上所有的activity给清除出栈, 把自己变成栈顶的效果. 应用场景: 商品列表 -> 商品详情 -> 图片详情 -> 大图查看 想从大图查看立刻回到商品列表, 并且把后面开启的三个页面关闭时.
-
singleInstance 单一实例模式: 系统会创建一个新的任务栈把activity的实例放在新的任务栈的栈顶(栈底), 其他的activity页面不会在这个任务栈中创建实例. 如果activity的实例已经存在, 系统会调用那个实例的onNewIntent方法. 应用场景: 在整个系统中只需要初始化一次的界面.
-
安卓中的四大组件_Activity
最新推荐文章于 2023-08-04 17:27:04 发布