Android笔记之Activity

来源:互联网 发布:c语言函数声明和调用 编辑:程序博客网 时间:2024/06/01 09:36

Android笔记之Activity

一.活动生命周期

共四种状态:运行,暂停,停止,结束
这里写图片描述
如图中总共有7中方法:

@Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        System.out.println("onCreate");    }    @Override    protected void onStart()    {        super.onStart();        System.out.println("onStart");    }    @Override    protected void onResume()    {        super.onResume();        System.out.println("onResume");    }    @Override    protected void onPause()    {        super.onPause();        System.out.println("onPause");    }    @Override    protected void onStop()    {        super.onStop();        System.out.println("onStop");    }    @Override    protected void onDestroy()    {        super.onDestroy();        System.out.println("onDestroy");    }    @Override    protected void onRestart()    {        super.onRestart();        System.out.println("onRestart");    }

当应用程序处于不可见,则为停止状态。当应用程序处于半透明,则处于暂停状态。

二.Activity跳转和值传递

1.如何启动Activity?
1)新建一个类,扩展自Activity。
2)在AndroidManifest.xml中添加Activity,可在图形化界面的Application中添加,设置名字。
3)新建对应的xml文件,并在activity中用setContentView(R.id.Aty1);来与布局绑定。
4)可以在MainActivity添加按钮来启动活动。
5)用intent启动

public class MainActivity extends Activity {    private Button btnStartAty1;    private TextView tvOut;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tvOut = (TextView) findViewById(R.id.tvOut);        btnStartAty1 = (Button) findViewById(R.id.btnStartAty1);        btnStartAty1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent(MainActivity.this, Aty1.class);                //这里需要写成MainActivity.this,只写this只访问到View.OnClickListener这个内部类                   startActivityForResult(i);            }        });    }

2.如何关闭Activity?
用finish();方法关闭。
3.如何传递数据给另外一个Activity?
方法一:Intent用putExtra直接携带数据,如: i.putExtra(“txt”, “Hello Aty1”);
在另外一个Activity中用getIntent().getStringExtra(“txt”);来获取数据,如tvOut.setText(getIntent().getStringExtra(“txt”));
方法二:用Bundle传递比较复杂的数据
如:

Bundle data = new Bundle();data.putString("txt", "Hello Aty1");                i.putExtras(data);

在接收的A ctivity中如下接收

Bundle data = getIntent().getExtras();String txt = data.getString("txt");     tvOut.setText(txt);

如果需要接收的Activity传回数据
则需要用startActivityForResult(Intent intent, int requestCode);来启动Activity. intent用来在活动之间传递数据。requestCode是一个整数请求码,用来标明父活动的一个请求码。
接收的那一端需要写

Intent i = new Intent();i.putExtra("result", "Hello MainActiviy");//第一个参数我字符串的名字叫result,内容为Hello MainActiviy                setResult(0, i);//0位startActivityForResult中的0对应

然后在主程序中从重写的onActivityResult(int requestCode, int resultCode, Intent data)方法来接收,requestCode为在startActivityForResult(Intent intent, int requestCode)中的请求码,resultCode为子活动通过setResult方法传入的一个返回码,一般为Activity基类中定义好的两个整型常量,RESULT_CANCELED和RESULT_OK. data为子活动传回来的数据。
如:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {             super.onActivityResult(requestCode, resultCode, data);        String result = data.getStringExtra("result");        tvOut.setText(result);                  }

三.Activity的启动模式

1.standard模式

在同一个任务栈中实现多个Activity实例,界面会显示栈顶的实例。

2.singleTop模式

创建intent的时候栈顶有该模式的实例,则不会创建新实例,而是将intent传送给该实例。

3.singleTask模式

只能创建一个实例

4.singleInstance模式

Activity会在一个单独的Task栈中,而且这个栈只能包含这一个活动。

0 0
原创粉丝点击