第十四章之Activity的生命周期

复习:servlet的生命周期


------------------------------------------------------------

Activity的生命周期:

当Activity创建的时候会调用OnCreate()
当Activity启动时会调用OnStart()
当Activity中的布局完全显示时会调用OnResume()
当Activity被遮挡的时会调用OnPause(),OnStop()
当Activity再次被显示的时候会调用OnRestart(),OnStart(),OnResume()
当Activity直接被干掉的时候,会调用OnPause,OnStop,OnDestroy();


手机横竖屏切换Activity的处理

手机横屏会重新从onCreate()方法启动一次

Tips:Ctrl+F12切屏


手机竖屏会重新从onCreate()启动两次(输入法导致的问题)


解决横竖屏带来的问题
在Activity配置文件里加上下面的属性
设置隐藏键盘,设置方向改变不启动,横竖屏不重新启动
android:configChanges=" orientation|keyboardHidden“


Activity保存临时的数据

当Activity被系统回收时调用,保存数据

onSaveInstance(Bundle savedInstanceState)



当Activity被系统回收再重新启动时调用,读取数据。(Bundle)
onRestoreInstance(Bundle outState)





Activity里面事件的处理

触摸事件
onTouchEvent()


键盘按下
onKeyDown()


键盘弹起
onKeyUp()


键盘长按
onKeyLongPresss()


键盘重复点击
onKeyMultiple()




//重写触摸事件
@Override
 public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub 


int action = event.getAction();




float  x= event.getX() ;
flaot  y= event.getY();


return super.onTouchEvent(event);


上课案例

MainActivity.java

<span style="font-size:10px;">public class MainActivity extends Activity {
	Button btn1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btn1 = (Button)findViewById(R.id.btn1);
		btn1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this,OtherActivity.class);
				startActivity(intent);
			}
		});
		System.out.println("OnCreate()---------------");
	}
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch(event.getAction()){
		case MotionEvent.ACTION_DOWN:
			float x = event.getX();
			float y = event.getY();
			System.out.println(x+"----"+y);
			break;
		case MotionEvent.ACTION_UP:
			System.out.println("抽你一嘴巴.....");
			break;
		}
		
		return super.onTouchEvent(event);
	}

	@Override
	protected void onStart() {
		System.out.println("onStart()---------------");
		super.onStart();
	}

	@Override
	protected void onRestart() {
		System.out.println("onRestart()---------------");
		super.onRestart();
	}

	@Override
	protected void onResume() {
		System.out.println("onResume()---------------");
		super.onResume();
	}

	@Override
	protected void onPause() {
		System.out.println("onPause()---------------");
		super.onPause();
	}

	@Override
	protected void onStop() {
		System.out.println("onStop()---------------");
		super.onStop();
	}

	@Override
	protected void onDestroy() {
		System.out.println("onDestroy()---------------");
		super.onDestroy();
	}
	/**
	 * 当系统回收时会调用该方法来保存数据
	 * 参数1:Bundle对象(存储数据)
	 */
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		outState.putString("name", "张三");
		super.onSaveInstanceState(outState);
	}
	/**
	 * 当系统再次显示被回收的Activity时,会调用该方法来获取数据
	 * 参数1:Bundle对象(存储数据)
	 */
	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
		String name = savedInstanceState.getString("name");
		System.out.println(name+"----------------");
		super.onRestoreInstanceState(savedInstanceState);
	}
	
}</span>


AndroidManifest.xml
<span style="font-size:10px;"><activity
            android:name="com.ryan.lsn3_14_2.MainActivity"
            android:label="@string/app_name" 
            android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity></span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值