首页 > 学院 > 开发设计 > 正文

finish()和startActivity两种结束Activity的区别

2019-11-09 15:49:01
字体:
来源:转载
供稿:网友

主Activity界面如下:

package com.example.hairu;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.util.Log;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { @Override PRotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("xuhaitao", "main onCreate"); } public void finish() { // TODO Auto-generated method stub super.finish(); Log.i("xuhaitao", "main finsih()"); } public void tiaoZhuan(View v) { Intent aa=new Intent(this,Bactivity.class); startActivity(aa); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i("xuhaitao", "main onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i("xuhaitao", "main onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i("xuhaitao", "main onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i("xuhaitao", "main onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i("xuhaitao", "main onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i("xuhaitao", "main onStop"); }}

Bactivity界面如下:

package com.example.hairu;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;public class Bactivity extends Activity { @Override public void finish() { super.finish(); Log.i("xuhaitao", "B finsih()"); } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.bbb); Log.i("xuhaitao", "B onCreate"); }public void tiaoZhuan02(View v) { //点击按钮后调用的方法 finish(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i("xuhaitao", "B onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i("xuhaitao", "B onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i("xuhaitao", "B onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i("xuhaitao", "B onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i("xuhaitao", "B onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i("xuhaitao", "B onStop"); }}

主Activity界面: 这里写图片描述

点击该按钮后,打印结果如下: 这里写图片描述




Bactivity界面如下: 这里写图片描述 点击按钮返回上一页时,打印结果: 这里写图片描述 很容易发现,通过finish的方法返回上一Activity时,自己最终是被OnDestroy(销毁)





如果把Bactivity中按钮的跳转方法改为通过Intent跳转,如下: 这里写图片描述


打印结果如下: 这里写图片描述 这里写图片描述


最后总结:通过Itent返回 自己到OnStop结束 对方从OnCreate开始通过finish返回 自己到OnDestroy结束 对方从OnRestart开始

FR:海涛高软(QQ技术交流群:386476712)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表