onPause和onStop的区别

 我来答
dayinspring
高粉答主

2016-09-20 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:2.3万
采纳率:92%
帮助的人:3557万
展开全部
1、区别:
1)onPause 用于由一个Activity转到另一个Activity、设备进入休眠状态(屏幕锁住了)、或者有dialog弹出时
2)onStop 用于不可见的Activity(有对话框弹出时,这时底下的activity仍然可见,所以此时onStop不会被调用)

2、例子:
Activity间切换的日志,从AActivity切换到BActivity:

[html] view plain copy print?
10-17 20:54:42.247: I/com.example.servicetest.AActivity(5817): onCreate() 1166919192 taskID=66
10-17 20:54:42.263: I/com.example.servicetest.AActivity(5817): onStart() 1166919192 taskID=66
10-17 20:54:42.263: I/com.example.servicetest.AActivity(5817): onResume() 1166919192 taskID=66
10-17 20:54:46.997: I/com.example.servicetest.AActivity(5817): onPause() 1166919192 taskID=66
10-17 20:54:47.021: I/com.example.servicetest.BActivity(5817): onCreate() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onStart() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onResume() 1166971824 taskID=66
10-17 20:54:47.099: I/com.example.servicetest.AActivity(5817): onStop() 1166919192 taskID=66

当触发从AActivity切换到BActivity时的日志如下:
10-17 20:54:46.997: I/com.example.servicetest.AActivity(5817): onPause() 1166919192 taskID=66
10-17 20:54:47.021: I/com.example.servicetest.BActivity(5817): onCreate() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onStart() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onResume() 1166971824 taskID=66
10-17 20:54:47.099: I/com.example.servicetest.AActivity(5817): onStop() 1166919192 taskID=66

先AActivity的onPause()被调用,然后是BActivity的初始化流程(onCreate() --> onStart() --> onResume()),再然后是AActivity的onStop()被调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hjrbsqvj0130
2016-08-30 · TA获得超过1581个赞
知道大有可为答主
回答量:1111
采纳率:0%
帮助的人:227万
展开全部
  onPause 用于由一个Activity转到另一个Activity、设备进入休眠状态(屏幕锁住了)、或者有dialog弹出时
  onStop 用于不可见的Activity(有对话框弹出时,这时底下的activity仍然可见,所以此时onStop不会被调用)
  从下面的日志日志可以看出区别:
  1.从FirstActivity跳到SecondActivity时
  FirstAcvity ---> onCreate
  FirstAcvity --->onStart
  FirstAcvity --->onResume
  FirstAcvity --->onPause
  SecondActivity--->onCreate
  SecondActivity--->onStart
  SecondActivity--->onResume
  FirstAcvity --->onStop
  现在给AndroidMainfest.xml中的SeconedActivity属性加入android:theme="@android:style/Theme.Dialog",则SeconedActivity将以对话框形式出现,不会对FirstAcvity形成遮盖.
  这时的状态输出为:
  FirstAcvity ---> onCreate
  FirstAcvity --->onStart
  FirstAcvity --->onResume
  FirstAcvity --->onPause
  SecondActivity--->onCreate
  SecondActivity--->onStart
  SecondActivity--->onResume
  这时FirstAcvity比完全遮盖时少调用了onStop方法.

  以下两种情况下 都只会触发onPause而不会触发onStop
  1. 一个透明的包含Dialog的Activity 出现
  2. 按poweroff锁屏

  显示一个非activity的Dialog,是不会调用onPause和onStop的,因为此Dialog属于activity
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式