Activity基本详讲

 Activity的概述:

顾名思义,Activity就是活动的意思。在Android中,Activity代表手机屏幕的一屏,或是平板电脑中的一个窗口。它是Android应用中的重要组成单元之一,提供了和用户交互的可视化界面。在一个Activity中,可以添加很多组件,这些组件负责具体的功能。

      在Android应用中,可以有多个Activity,这些Activity组成了Activity栈(Stack) ,当前活动的Activity位于栈顶,之前的Activity被压入下面,成为非活动的Activity,等待是否可能被恢复为活动状态.在Activity的生命周期中,有如下4个重要状态:

  


Activity的生命周期:

  

Activity的生命周期中有以下方法会被系统回调:

        onCreate():在创建Activity时被回调。该方法是最常见的方法,在Eclipse中创建Android项目时,会自动创建一个Activity,在该Activity中,默认重写了onCreate(Bundle savedInstanceState)方法,用于对该Activity执行初始化。

       onStart():启动Activity会被回调,也就是当一个Activity变为现时被回调。

onRestart():重新启动Activity时会被回调,该方法总是在onStart()方法以后执行。

onPause():暂停Activity时被回调。该方法需要被非常快速的执行,因为直到该方法执行完毕后,下一个Activity才能被恢复。在该方法中,通常用于持久保存数据。列如:当我们正在玩游戏的时候,突然来了一个电话,这是就可以在该方法中将游戏状态持久保存起来。

onResume():当Activity由暂停状态恢复为活动状态时调用。调用该方法后,该Activity位于Activity栈的栈顶。

onStop():停止Activity时被回调。

onDestroy():销毁Activity时被回调。

  在Activity中,可以根据程序的需要来重写相应的方法。通常情况下,onCreate()和onPause()方法是最常用的,经常需要重写这两个方法。


 下面是Activity的生命周期图:

   


  实现应用对话框主题的关于Activity

      代码如下:

       AboutActivity:

         

package com.example.mytest;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class AboutActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		RelativeLayout rel = new RelativeLayout(this);
		WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
		layoutParams.width = 500;
		layoutParams.height = 400;
		layoutParams.alpha = 100;
		WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);  
		int width = wm.getDefaultDisplay().getWidth();//屏幕宽度  
		int height = wm.getDefaultDisplay().getHeight(); 
		layoutParams.x = 0; 	
		layoutParams.y = -height;
		rel.setLayoutParams(layoutParams);
		//		rel.setPadding(20, 20, 20, 20);
		rel.setBackgroundColor(Color.rgb(120, 110 , 224));
		TextView tv = new TextView(this);
		tv.setTextSize(24);
		tv.setText("我是Activity窗体");
		rel.addView(tv);
		setContentView(rel);

	}

}

 在AndroidMainifest.xml中的配置:

   

  <activity 
            android:name=".AboutActivity"
            android:theme="@android:style/Theme.Dialog"
            />
  


   多个Activity的使用:

   使用Bundle在Activity之间交换数据:

       注释:Bundle是一个字符串值到各种Parcelable类型的映射,用于保存要携带的数据包

       Intent作为两个Activity之间的交互桥梁,所以只要将数据保存在Intent中,就可以将其传递到另一个Activity中了。

 在Android中,可以将要保存的数据存放在Bundle对象中,然后通过Intent提供的putExtras()方法将要携带的数据保存到Intent中。

     Activity间传递数据有两种方式:单向传递和双向传递。

    单向传递:

        在MainActivity中:(由MainActivity向AboutActivity传递数据)

     

	Intent intent = new Intent(MainActivity.this,AboutActivity.class);
		Bundle bundle = new Bundle();
		String name = "xiaoming";
		int pwd = 123;
		bundle.putString("name", "xiaoming");
		bundle.putInt("pwd", pwd);
		intent.putExtras(bundle);

在AboutActivity中:(在AboutActivity中接受数据)
  

Intent intent = getIntent();
		Bundle bundle = intent.getExtras();
		String name = bundle.getString("name");
		int pwd = bundle.getInt("pwd");

  双向传递数据:

    MainActivity:

int REQUEST_CODE = 200;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Intent intent = new Intent(MainActivity.this,AboutActivity.class);
		Bundle bundle = new Bundle();
		String name = "xiaoming";
		int pwd = 123;
		bundle.putString("name", "xiaoming");
		bundle.putInt("pwd", pwd);
		intent.putExtras(bundle);
		startActivityForResult(intent, REQUEST_CODE);
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		
		if(requestCode == 200 && resultCode == 200){
			Bundle bundle = data.getExtras();
			String name = bundle.getString("name");
			int pwd = bundle.getInt("pwd");
		}
		
	}

    AboutActivity:

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		Intent intent = getIntent();
		Bundle bundle = intent.getExtras();
		String name = bundle.getString("name");
		int pwd = bundle.getInt("pwd");

	}
	
	public void finisActivity(){
		int RESULT_CODE = 200;
		Intent intent = new Intent();
		Bundle bundle = new Bundle();
		String name = "xiaoming";
		int pwd = 123;
		bundle.putString("name", "xiaoming");
		bundle.putInt("pwd", pwd);
		intent.putExtras(bundle);
		setResult(RESULT_CODE, intent);
		finish();
	}

  以上就是Activity的基本使用方式,其实Activity要真正研究还是有点深的,比如Activity的启动栈运行的理解和运用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值