Activity

来源:互联网 发布:宁夏隆盛软件下载 编辑:程序博客网 时间:2024/06/05 14:53

1.什么是Activity?

简单来讲就是一个界面。

比如:我们所看到的手机的桌面,拨号界面,短信界面,这些界面都是Activity。

Activity的特点

我们可以通过后退键来退出Activity,也可以通过HOME键返回到桌面,也可以在一个Activity中启动另一个Activity

2.Activity生命周期


启动应用:执行onCreate,onStart,onResume,

HOME键回到桌面:执行onPause,onStop

多任务键重新导航到这这个应用:执行onRestart,onStart,onResume

返回后退键:执行onPause,onStop,onDestroy

3.Activity数据传递

A.Intent参数传递

如:字符串的传递

①在activity_main.xml的主布局文件中,加入Button控件,并设置id。android:id="@+id/btnStartAty"

②新建Activity Name是BAty的Activity,并设置其中的TextView。android:id="@+id/tv"

③在MainActivity的onCreate方法中加入代码

findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent(MainActivity.this,BAty.class);                i.putExtra("data","Hello Android");//定义参数startActivity(i); }

④在BAty的onCreate方法前面声明TextView。

private TextView tv;

⑤在BAty的onCreate方法中加入代码

 Intent i= getIntent();//获取到在MainActivity中定义的参数 tv= (TextView) findViewById(R.id.tv); tv.setText(i.getStringExtra("data"));//获取到定义为“data”的字符串数据,传给tv(TextView)
B.Bundle数据包的传递

①在activity_main.xml的主布局文件中,加入Button控件,并设置id。android:id="@+id/btnStartAty"

②新建Activity Name是BAty的Activity,并设置其中的TextView。android:id="@+id/tv"

③在MainActivity的onCreate方法中加入代码

findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent(MainActivity.this,BAty.class);Bundle b = new Bundle();//定义一个Bundle//用Bundle来存入很多种基本数据,通过这种方式传递给第二个Activity                b.putString("name","Java");//在Bundle中参数name                b.putInt("age",24);//在Bundle中参数age//等等还有其他的数据类型,也可以嵌套Bundle                i.putExtras(b);//传入Bundle//i.putExtra("data",b);//另一种出入Bundle方式startActivity(i); }

④在BAty的onCreate方法前面声明TextView。

private TextView tv;

⑤在BAty的onCreate方法中加入代码

 tv= (TextView) findViewById(R.id.tv); Intent i= getIntent();//获取到在MainActivity中定义的参数 Bundle data = i.getExtras();//获取Bundle //Bundle data = i.getBundleExtra();//另一种获取Bundle方式 tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));//呈现出我们获取到的Bundle中的内容

扩展:在Bundle中,使用putExtras(Bundle extras)方法传对象时,用getExtra()方法来获取传入的值
                                使用putExtra(String name,Bundle value)方法传对象时,用getBundleExtra(String name)方法来获取传入的值
C.值对象传递

值对象:自定义的有数据类型的数据对象

详情见:Activity值对象传递

D.获取返回参数

详情见:Activity获取返回值

4.Activity的启动模式

standard模式:默认启动方式;在同一个任务栈里,创建不同的实例;通过后退键,可以弹出栈顶的实例,然后呈现上一个Activity的实例;通过这种方式,支持后退键的导航

singleTop模式:在同一个栈里,如果此时的Activity处于栈顶,那么只能创建一个实例,否则会创建一个新的实例

singleTask模式:在同一个栈里,singleTask模式启动会启动到第一次singleTask所创建的实例,弹回其他方式启动的实例

singleInstance模式:singleInstance只存在独立的任务栈里,一个任务栈只包括这么一个Activity,也只含有一个实例

详情见:Activity启动模式








0 0
原创粉丝点击