Android Activity

来源:互联网 发布:java程序员的自我介绍 编辑:程序博客网 时间:2024/05/01 04:11

本文涉及内容包括:

Activity生命周期、task、Activity Task、Bundle、Intent。

Task ActivityTask

task是一个Activity栈,用来完成用户的某一个目的,这些Activity可以来自不同的应用程序。每一个Task有自己的 Activity Stack。

假设我们首先在用IReader在看书,从选书到具体书的阅读界面,这是有好几个Activity。我们每一个点击的Activity都被放在阅读这个Task对应的Activity Stack中了,这可以放我们通过回退键返回每一个前面的Activity。我们在阅读到一半时,想看看Sina微博,按Home键离开了IReader。在Sina微博界面也是有多个Activity,我们一步到阅读界面。这时候我们每一个点击的Activity都被放在Sina微博这个Task对应的Activity Stack中了,这可以放我们通过回退键返回每一个前面的Activity。我们这时候再回到IReader读书界面,原先的状态还是保留的。

下面这个图从另外一个角度描述了Application Task Activities的关系

image

Task通过Application launcher、Home screen的快捷方式或者 由 “Recent Tasks”(长时间按住Home键)最近使用过的Task记录中启动。

当从一个Activity中启动另外一个Activity时,Back键将作用于返回前一个Activity,与此同时 新开启的Activity将被添加到Activity Stack中。

摘自:http://www.cnblogs.com/ghj1976/archive/2011/04/29/2032412.html

 

Activity生命周期

点击查看原图

OnCreate():在Activity创建时调用。

OnStart():在Activity被用户可见时调用。

OnResume():在Activity可以被用户操作,既响应用户操作时调用。

OnPasuse():在Activity被暂停或者其他资源调用时调用,可以在该方法中保存数据。

OnStop():在Activity完全不可见时调用,如果只是Activity被部分遮挡时不会被调用。

OnRestart():重新启动Activity时调用,该活动仍在栈中,而不是启动新的活动。

OnDestroy():Activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用onFinish()方法或者系统决定停止该活动以释放资源!

 

Bundle

用于不同activity间传递数据。可以存放多种数据类型的数据,如:字符串、int、double等。

 

Intent

Intent用法实例

1.无参数Activity跳转

Intent it = new Intent(Activity.Main.this, Activity2.class);startActivity(it);   

2.向下一个Activity传递数据(使用Bundle和Intent.putExtras)

Intent it = new Intent(Activity.Main.this, Activity2.class);Bundle bundle=new Bundle();bundle.putString("name", "This is from MainActivity!");it.putExtras(bundle);       // it.putExtra(“test”, "shuju”);startActivity(it);            // startActivityForResult(it,REQUEST_CODE);

对于数据的获取可以采用:

Bundle bundle=getIntent().getExtras();String name=bundle.getString("name");

3.向上一个Activity返回结果(使用setResult,针对startActivityForResult(it,REQUEST_CODE)启动的Activity)

        Intent intent=getIntent();        Bundle bundle2=new Bundle();        bundle2.putString("name", "This is from ShowMsg!");        intent.putExtras(bundle2);        setResult(RESULT_OK, intent);

4.回调上一个Activity的结果处理函数(onActivityResult)

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        if (requestCode==REQUEST_CODE){            if(resultCode==RESULT_CANCELED)                  setTitle("cancle");            else if (resultCode==RESULT_OK) {                 String temp=null;                 Bundle bundle=data.getExtras();                 if(bundle!=null)   temp=bundle.getString("name");                 setTitle(temp);            }        }    }
摘自:http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html