Activity生命周期交互设计思想和应用场景(附源码)
2015-08-02 15:31
639 查看
Activity生命周期交互设计思想
1.在多个Activity进行交互的时候,为什么要先暂停(onPause()方法)当前的Activity,执行新的Activity的onCreate()方法,onStart()方法,onResume()方法?
答:比如当你正在一个页面(Activity)上看视频,此时,页面正处于onResume()方法。正在这个时候,突然来了一个电话。此时Android的处理是:首先把第一个视频的页面暂停(onPause()方法),然后再执行第二个页面的onCreate()方法,onStart()方法,onRsume()方法。当第二个页面获得焦点(onResume()方法)的时候,新的页面成功开启的时候,才停止(onStop()方法)第一个页面。如果在新打开的页面onCreate()方法执行之前,就停止(onStop()方法)的话,如果第二个页面由于其它原因开启失败,那就会出现黑屏状态。
2.Activity横竖屏切换:
首先Activity先执行一个生命周期的函数,然后再重新创建一个新的Activity。
以下是Android在横竖屏切换的时候调用的方法:保存信息在参数中。
3.Android生命周期应用场景:
(1).onDestory()方法:释放掉与Activity相关的一些属性,为了防止内存泄漏,在优化等方面很重要。
(2).Activity启动的方式:
A:显示启动方式:直接通过类名来启动。
B.隐式启动方式:通过设置Action属性标签和种类标签。应用于启动不知类名的Activity。例如启动系统的类名。不是启动本应用程序的Activity。如下启动系统常见的Activity:
(1).启动系统的浏览器:
(2).启动相册:
(3).发送短信:
(4).启动电话界面:
1.在多个Activity进行交互的时候,为什么要先暂停(onPause()方法)当前的Activity,执行新的Activity的onCreate()方法,onStart()方法,onResume()方法?
答:比如当你正在一个页面(Activity)上看视频,此时,页面正处于onResume()方法。正在这个时候,突然来了一个电话。此时Android的处理是:首先把第一个视频的页面暂停(onPause()方法),然后再执行第二个页面的onCreate()方法,onStart()方法,onRsume()方法。当第二个页面获得焦点(onResume()方法)的时候,新的页面成功开启的时候,才停止(onStop()方法)第一个页面。如果在新打开的页面onCreate()方法执行之前,就停止(onStop()方法)的话,如果第二个页面由于其它原因开启失败,那就会出现黑屏状态。
2.Activity横竖屏切换:
首先Activity先执行一个生命周期的函数,然后再重新创建一个新的Activity。
以下是Android在横竖屏切换的时候调用的方法:保存信息在参数中。
/** * 保存信息到参数中 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); /** * 保存信息 */ outState.putString("key", "value"); } /** * 参数中取出保存的信息 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 取出保存的信息 */ if (savedInstanceState != null) { String value = savedInstanceState.getString("key"); } }
3.Android生命周期应用场景:
(1).onDestory()方法:释放掉与Activity相关的一些属性,为了防止内存泄漏,在优化等方面很重要。
(2).Activity启动的方式:
A:显示启动方式:直接通过类名来启动。
Intent intent = new Intent(MainActivity.this,SecondActiivty.class); startActivity(intent);
B.隐式启动方式:通过设置Action属性标签和种类标签。应用于启动不知类名的Activity。例如启动系统的类名。不是启动本应用程序的Activity。如下启动系统常见的Activity:
(1).启动系统的浏览器:
Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.parse("https://www.baidu.com/"); intent.setData(uri); startActivity(intent);
(2).启动相册:
Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent,0);
(3).发送短信:
Uri uri = Uri.parse("smsto:13607567010"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "The SMS text"); startActivity(intent); <uses-permission android:name="android.permission.SEND_SMS" />
(4).启动电话界面:
Uri uri = Uri.parse("tel:13607567010"); Intent intent = new Intent(Intent.ACTION_CALL, uri); startActivity(intent); <uses-permission android:name="android.permission.CALL_PHONE" />
相关文章推荐
- poj 1679 The Unique MST 判断最小生成树是否唯一(图论)
- apue 第十五章 进程间通信
- UILabel字体加粗 IOS
- leetcode 60: Permutation Sequence
- Common Subsequence(最长公共子序列DP)
- 调整UILabel行高间距
- codeforces 566F F. Clique in the Divisibility Graph(dp)
- 常用类库StringBuilder
- 【LeetCode】232 & 225 - Implement Queue using Stacks & Implement Stack using Queues
- 在iOS 8中使用UIAlertController
- 【转】UITableView使用详解
- 洛谷1373 小a和uim之大逃离
- easyui dataGrid接收嵌套JSON
- easyui dialog子窗口关闭父窗口
- android:layout_centerHorizontal="true"和 android:gravity="center_horizontal"什么区别?
- Selenium2学习-026-WebUI自动化实战实例-024-获取页面元素
- uuid (guid)全局唯一标识符
- Android SDK Tools Platform-tools Build-tools
- hdu 5329 Question for the Leader 枚举,划分图为k个联通的子图
- Gym 100570E : Palindrome Query