关于activity的生命周期

guliang_fenfen 2015-08-17 09:16:44
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。


请问2和4分别是什么样的状态呀?它们两者有啥区别呢?4我写代码测试过了。但是2我不知道是什么情况。。。。
...全文
285 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
=10_01= 2015-08-20
  • 打赏
  • 举报
回复
引用 11 楼 guliang_fenfen 的回复:
[quote=引用 9 楼 Li_Jun__ 的回复:] PopupWindow 是个控件,PopupWindow 属于当前 Activity,就相当于添加一个 TextView,也不会调用其它生命周期方法,用 Activity 测试。
如果用activity测试的话,那和4有什么区别呢想不明白。。。[/quote] 可不可见的区别
guliang_fenfen 2015-08-19
  • 打赏
  • 举报
回复
引用 9 楼 Li_Jun__ 的回复:
PopupWindow 是个控件,PopupWindow 属于当前 Activity,就相当于添加一个 TextView,也不会调用其它生命周期方法,用 Activity 测试。
如果用activity测试的话,那和4有什么区别呢想不明白。。。
=10_01= 2015-08-19
  • 打赏
  • 举报
回复
用不同的方法包装一下,代码看起来舒服点。
=10_01= 2015-08-19
  • 打赏
  • 举报
回复
PopupWindow 是个控件,PopupWindow 属于当前 Activity,就相当于添加一个 TextView,也不会调用其它生命周期方法,用 Activity 测试。
k_c_u_f 2015-08-18
  • 打赏
  • 举报
回复
2就相当于Activity上面弹出一个对话框,Activity可见但是失去焦点,4Activity既失去焦点也不可见
guliang_fenfen 2015-08-18
  • 打赏
  • 举报
回复
引用 6 楼 jiangguohu1 的回复:
[quote=引用 4 楼 guliang_fenfen 的回复:] [quote=引用 3 楼 k_c_u_f 的回复:] 2就相当于Activity上面弹出一个对话框,Activity可见但是失去焦点,4Activity既失去焦点也不可见
我写了一个弹出popupwindow的测试,可是当前activity一点反应都木有 [/quote] 失去焦点但可见,就是2。不可见就是4。把你写的popupwindow测试代码发出来看看。[/quote] 代码附上
package com.example.lifecycletest;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;

public class FirstActivity extends Activity {

	private Button click;

	// 创建Activity时被回调。该方法只会被调用一次。
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.first);
		View contentView = LayoutInflater.from(getApplicationContext())
				.inflate(R.layout.popwindow, null);
		// 声明一个弹出框
		final PopupWindow popupWindow = new PopupWindow(contentView, 200, 300);
		popupWindow.setFocusable(true);
		click = (Button) findViewById(R.id.click);
		click.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				popupWindow.showAsDropDown(v);
				popupWindow.showAtLocation(findViewById(R.id.click),
						Gravity.CENTER, 20, 20);
			}
		});
		contentView.findViewById(R.id.close).setOnClickListener(
				new View.OnClickListener() {

					@Override
					public void onClick(View v) {
						popupWindow.dismiss();

					}
				});
	}

	// 暂停Activity时被回调。
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		Log.e("onPause", "--------" + "onPause" + "--------------");
	}

	// 重新启动Activity时被回调。
	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		Log.e("onRestart", "--------" + "onRestart" + "--------------");
	}

	// 恢复Activity时被回调,onStart()方法后一定会回调onResume()方法。
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		Log.e("onResume", "--------" + "onResume" + "--------------");
	}

	// 启动Activity时被回调。
	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		Log.e("onStart", "--------" + "onStart" + "--------------");
	}

	// 停止Activity时被回调。
	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		Log.e("onStop", "--------" + "onStop" + "--------------");
	}

}
另外,请问大神,为什么我的代码看起来如此凌乱,要是我写的代码能看起来像专家写的就好了求指正
guliang_fenfen 2015-08-18
  • 打赏
  • 举报
回复
引用 2 楼 Li_Jun__ 的回复:
貌似 Activity 失去焦点就会获得调用 onPause();当 Activity 失去焦点并不可见时会调用 onStop();Activity 异常退出并不一定会调用 onDestory()。
引用 6 楼 jiangguohu1 的回复:
[quote=引用 4 楼 guliang_fenfen 的回复:] [quote=引用 3 楼 k_c_u_f 的回复:] 2就相当于Activity上面弹出一个对话框,Activity可见但是失去焦点,4Activity既失去焦点也不可见
我写了一个弹出popupwindow的测试,可是当前activity一点反应都木有 [/quote] 失去焦点但可见,就是2。不可见就是4。把你写的popupwindow测试代码发出来看看。[/quote] 代码附上: package com.example.lifecycletest; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.PopupWindow; public class FirstActivity extends Activity { private Button click; // 创建Activity时被回调。该方法只会被调用一次。 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first); View contentView = LayoutInflater.from(getApplicationContext()) .inflate(R.layout.popwindow, null); // 声明一个弹出框 final PopupWindow popupWindow = new PopupWindow(contentView, 200, 300); popupWindow.setFocusable(true); click = (Button) findViewById(R.id.click); click.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popupWindow.showAsDropDown(v); popupWindow.showAtLocation(findViewById(R.id.click), Gravity.CENTER, 20, 20); } }); contentView.findViewById(R.id.close).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); } }); } // 暂停Activity时被回调。 @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.e("onPause", "--------" + "onPause" + "--------------"); } // 重新启动Activity时被回调。 @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.e("onRestart", "--------" + "onRestart" + "--------------"); } // 恢复Activity时被回调,onStart()方法后一定会回调onResume()方法。 @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.e("onResume", "--------" + "onResume" + "--------------"); } // 启动Activity时被回调。 @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.e("onStart", "--------" + "onStart" + "--------------"); } // 停止Activity时被回调。 @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.e("onStop", "--------" + "onStop" + "--------------"); } } 另外想问一下大神,为什么我的代码看起来如此凌乱,如果我的代码能写的看起来像专家写的就好了求指教
大盗懒羊羊 2015-08-18
  • 打赏
  • 举报
回复
引用 4 楼 guliang_fenfen 的回复:
[quote=引用 3 楼 k_c_u_f 的回复:] 2就相当于Activity上面弹出一个对话框,Activity可见但是失去焦点,4Activity既失去焦点也不可见
我写了一个弹出popupwindow的测试,可是当前activity一点反应都木有 [/quote] 失去焦点但可见,就是2。不可见就是4。把你写的popupwindow测试代码发出来看看。
qsw1214 2015-08-18
  • 打赏
  • 举报
回复
引用 4 楼 guliang_fenfen 的回复:
[quote=引用 3 楼 k_c_u_f 的回复:] 2就相当于Activity上面弹出一个对话框,Activity可见但是失去焦点,4Activity既失去焦点也不可见
我写了一个弹出popupwindow的测试,可是当前activity一点反应都木有 [/quote]确定吗?
guliang_fenfen 2015-08-18
  • 打赏
  • 举报
回复
引用 3 楼 k_c_u_f 的回复:
2就相当于Activity上面弹出一个对话框,Activity可见但是失去焦点,4Activity既失去焦点也不可见
我写了一个弹出popupwindow的测试,可是当前activity一点反应都木有
=10_01= 2015-08-17
  • 打赏
  • 举报
回复
貌似 Activity 失去焦点就会获得调用 onPause();当 Activity 失去焦点并不可见时会调用 onStop();Activity 异常退出并不一定会调用 onDestory()。
水的川 2015-08-17
  • 打赏
  • 举报
回复
2就是打开其它页面的时候,但是你又没关闭之前的页面即没destroy,就会调用onpause()方法。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧