Antivity的生命周期
来源:互联网 发布:淘宝联盟能赚钱吗 编辑:程序博客网 时间:2024/06/08 00:34
首先我创建了两个页面,,,第一个页面有一个小按钮,,,点击可以跳转到第二个页面
第一个页面代码(为了查询log方便,,我直接写成了中文,,,打开这个页面,,看那个方法的调用顺序来判断activity生命周期)
package com.yiyajing.yyj.youku;
import android.content.Intent;
import android.media.tv.TvContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button btn;
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, lifecycleActivity.class); startActivity(intent); } }); Log.v("111111111111111111","我是onCreated");}@Overrideprotected void onStart() { super.onStart(); Log.v("2222222222222222","我是onstart");}@Overrideprotected void onStop() { super.onStop(); Log.v("3333333333333333","我是onstop");}@Overrideprotected void onRestart() { super.onRestart(); Log.v("444444444444444444","我是onRestart");}@Overrideprotected void onResume() { super.onResume(); Log.v("555555555555555","我是onResume");}@Overrideprotected void onDestroy() { super.onDestroy(); Log.v("666666666666666666","我是销毁...........");}@Overrideprotected void onPause() { super.onPause(); Log.v("777777777777777777","我是onPause");}
}
打开APP后log显示:
08-04 13:32:23.711 3502-3502/? V/111111111111111111: 我是onCreated
08-04 13:32:23.711 3502-3502/? V/2222222222222222: 我是onstart
08-04 13:32:23.711 3502-3502/? V/555555555555555: 我是onResume
由此可见:页面首先会创建….创建完成后开始运行onstart,,,然后开始和用户交互的时候调用的onResume方法.
我点击按钮跳转到另一个页面之后走的方法:
08-04 13:41:37.344 3502-3502/com.yiyajing.yyj.youku V/777777777777777777: 我是onPause
08-04 13:41:37.974 3502-3502/com.yiyajing.yyj.youku V/3333333333333333: 我是onstop
解析:
首先是onPause页面消失,暂停和用户交互
然后页面完全被覆盖之后运行了onStop方法.
我返回到第一个页面,,log:
08-04 13:44:27.372 3502-3502/com.yiyajing.yyj.youku V/444444444444444444: 我是onRestart
08-04 13:44:27.372 3502-3502/com.yiyajing.yyj.youku V/2222222222222222: 我是onstart
08-04 13:44:27.372 3502-3502/com.yiyajing.yyj.youku V/555555555555555: 我是onResume
解析:
返回后,,页面重新显示出来,,,走的是onRestart方法
然后开始运行onStart
和用户交互onResume
以上是第一个页面完全被覆盖住的情况
二、这次我在第一个页面上面创建了一个dialog,,,点击按钮就打开dialog,,看一下在页面没有被完全覆盖的情况下,,,Activity的生命周期是怎么走的
(我把点击事件修改成了打开dialog,,代码如下)
public class MainActivity extends AppCompatActivity {
private Button btn;
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialog(); } }); Log.v("111111111111111111","我是onCreated");}private void showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("确认退出吗"); builder.setTitle("提示"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss();//关闭对话框 finish(); //结束当前activity } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); //创建并显示该对话框}
1.打开页面走的三个方法如上,,分别是(onCreated,,,onStart,,,onResume)
2.打开dialog后,,,完全没走任何方法,,,也就是说,,这种操作并不会影响activity的运行.
3.点击确定关闭该dialog走的三个方法分别是(暂停和用户的交互onPause,,,,,停止该页面的活动onStop,,,,,,最后是该activity完全被销毁onDestory )
三、还有一种情况:我创建了一个Activity,然后在清单文件里面把这个Activity的样式(theme)改成了Dialog(代码如下)
<activity android:name=".DialogActivity" android:theme="@style/Theme.AppCompat.Dialog"></activity>
这样的Dialog对话框是会走生命周期的
分析:因为这种Dialog对话框不会完全覆盖住之前的Activity,所以,当启动这个Dialog对话框的时候,,上一个Activity活动只会走onPause方法,而只有页面退到后台或者完全不可见的时候才会运行onStop方法
- Antivity的生命周期
- antivity的configChanges属性
- 一些antivity的使用技巧
- Andriod 设计制作切换包含不同的Antivity
- antivity-fragment
- JSF的生命周期 (图例JSF的生命周期)
- 服务的生命周期-绑定服务的生命周期
- AsyncTask生命周期和生命周期各部分的作用
- 【生命周期】Android中Activity的生命周期
- IOS应用程序生命周期-UIApplication的生命周期
- IOS应用程序生命周期-UIViewController的生命周期
- ios生命周期 uiviewController的生命周期(3)
- 应用程序生命周期 和UIViewController的生命周期
- Service的生命周期与Activity生命周期区别
- Activity的生命周期和Fragment生命周期
- Maven的生命周期 命令行与生命周期
- Servlet的生命周期
- 会话bean的生命周期
- 设计模式之桥接模式
- 黑客利用智能绘图平板发起DDoS攻击
- [caioj]单调队列3 单调队列
- JMeter使用
- 同样的程序每次运行的时间不一样
- Antivity的生命周期
- js中实现cookie的增删改查(document.cookie的使用详情)
- 那些代码的事儿
- idea破解
- SQL 数据库的操作(三)
- android studio compile 使用+ 的一些警告
- 利用jTessBoxEditor工具进行Tesseract3.02样本训练,提高识别率
- 如何解决:INSTALL_PARSE_FAILED_NO_CERTIFICATES 问题
- Sublime Text3: 让JSX支持Emmet调用代码补全和缩写(tab)