Activity详解

介绍Activity

Activity是Android 四大组件最常见的组件 其他三个组件分别是Service、ContentProvider、BrocastReciver 。

activity位于充满整个窗口或者是覆盖在其他窗口之上 , 当启动另一个activity 以存在的activity就会被新的activity覆盖 大家都知道栈的原理 先进后出的规矩 ,以存在的activity就会压入到栈中 等待被启动  。

activity是一个应用组件、提供一个屏幕 用户可以与之交互执行做某一件事。

Activity生命周期

生命周期的图:

111803_TWOa_1177636.gif

 

从上面图可知道activity创建直到结束的这么个过程和它中间发生了什么状态的变化.

 下面来创建一个项目 更加的清楚 明白activity生命周期的运行状态

import android.app.Activity;  

import android.os.Bundle;  

import android.util.Log;  

import android.view.KeyEvent;  

public class ActivityLife extends Activity {  

    private final static String TAG="ActivityLife";  

      

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  
       

        Log.i(TAG, "onCreate");  

    }  

    @Override  

    protected void onStart() {  

        Log.i(TAG, "onStart");  

        super.onStart();  

    }  

    @Override  

    protected void onRestart() {  

        Log.i(TAG, "onRestart");  

        super.onRestart();  

    }  

    @Override  

    protected void onResume() {  

        Log.i(TAG, "onResume");  

        super.onResume();  

    }  

    @Override  

    protected void onPause() {  

        Log.i(TAG, "onPause");  

        super.onPause();  

    }  

    @Override  

    protected void onStop() {  

        Log.i(TAG, "onStop");  

        super.onStop();  

    }  

    @Override  

    protected void onDestroy() {  

        Log.i(TAG, "onDestroy");  

        super.onDestroy();  

    }  

}

上面是一个较简单的一个activity ,目的是了解activity生命周期的过程。

当启动一个activity时 会执行哪些方法:

  Log.i(TAG, "onCreate"); 
  Log.i(TAG, "onStart"); 
  Log.i(TAG, "onResume"); 

当长按“home”键 看看最近的应用程序 启动ActivityLife  会执行哪些方法:

  Log.i(TAG, "onCreate"); 
  Log.i(TAG, "onStart"); 
  Log.i(TAG, "onResume"); 

当按"home"键 会执行哪些方法:

   Log.i(TAG, "onPause");

   Log.i(TAG, "onStop"); 

当 按 “返回“键  会执行哪些方法:

   Log.i(TAG, "onPause");

   Log.i(TAG, "onStop"); 
   Log.i(TAG, "onDestroy"); 

当关闭应用程序 会执行哪些方法:

  Log.i(TAG, "onRestart"); 

  Log.i(TAG, "onStart"); 
  Log.i(TAG, "onResume"); 

 

以下是各个方法的详细说明:

onCreate():当 activity 第一次创建时会被调用。在这个方法中你需要完成所有的正常静态设置 ,比如创建一个视图( view )、绑定列表的数据等等。如果能捕获到 activity 状态的话,这个方法传递进来的 Bundle 对象将存放了 activity 当前的状态。调用该方法后一般会调用 onStart() 方法。

onRestart():在 activity 被停止后重新启动时会调用该方法。其后续会调用 onStart 方法。

onStart()à当 activity 对于用户可见前即调用这个方法。如果 activity回到前台则接着调用 onResume() ,如果 activity 隐藏则调用onStop()

onResume():在 activity 开始与用户交互前调用该方法。在这时该activity 处于 activity 栈的顶部,并且接受用户的输入。其后续会调用 onPause() 方法。

onPause():在系统准备开始恢复其它 activity 时会调用该方法。这个方法中通常用来提交一些还没保存的更改到持久数据 中,停止一些动画或其它一些耗 CPU 的操作等等。无论在该方法里面进行任何操作,都需要较快速完成,因为如果它不返回的话,下一个 activity 将无法恢复出来。如果 activity 返回到前台将会调用 onResume() ,如果 activity 变得对用户不可见了将会调用onStop() 。

onStop():在 activity 对用户不可见时将调用该方法。可能会因为当前 activity 正在被销毁,或另一个 activity (已经存在的activity 或新的 activity )已经恢复了正准备覆盖它,而调用该方法。如果 activity 正准备返回与用户交互时后续会调用onRestart ,如果 activity 正在被释放则会调用 onDestroy 。

onDestroy():在 activity 被销毁前会调用该方法。这是 activity 能接收到的最后一个调用。可能会因为有人调用了 finish 方法使得当前activity 正在关闭,或系统为了保护内存临时释放这个 activity的实例,而调用该方法。你可以用 isFinishing 方法来区分这两种不同的情况。

以上方法解释 感谢http://blog.csdn.net/tangcheng_ok 博主

 

Activity中传递数据和跳转

普通的跳转Intent 。假设跳转到新的activity B

Intent  intent=new  Intent();

intent.setclass(ActivityLife.this,B.class);

startActivity(intent);

 

跳转时并传数据到新的activity去

Intent  intent  =new  Intent();

Bundle bundle=new Bundle();
bundle.putString("name", TAG);
intent.putExtras(bundle);
startActivity(intent);

有时当一个activity传到下一个activity 的数据 要返回上一个activity 保存数据 这时 需要用到的是startActivityForResult(intent, requestCode);来保存数据。里面的两个参数 一个是intent 另外requestcode相当一个标识符(1,2,3...);

Intent intent=new Intent();

intent.setclass(ActivityLife.this,B.class);

startActivityForResult(intent, 1);

到下一个activity 界面中 接受到上一个activity传来的数据 用setResult();

Intent intent=new Intent();

intetn.putExtra("request1", "requestB");

setResult(1,intent);

在 B activity中 怎么样接收 request1的值 呢  需要用到onActivityResult(requestCode, resultCode, data) 用requestcode来确定;

if(requestcode==1){

String strname=intetn.getStringExtra(request1);

log.i(TAG,strname);

}

OK  以上就是activity的内容  。

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/1177636/blog/363800

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中,Activity 是 Android 应用程序的核心组件之一。它代表了用户与应用程序交互的一个屏幕,类似于 Windows 中的窗口。Activity 提供了一个用户界面,用于显示应用程序的内容,并处理用户输入。在本文中,我们将详细介绍 Java 中的 Activity。 1. Activity 的生命周期 Activity 的生命周期是指从创建到销毁的整个过程。Activity 的生命周期可以分为以下几个部分: 1.1. 创建阶段 在创建阶段,Activity 将完成以下几个步骤: 1.1.1. onCreate():当 Activity 被创建时,系统会调用 onCreate() 方法。在此方法中,开发者可以初始化 Activity 的布局、绑定事件等。 1.1.2. onStart():当 Activity 准备好与用户进行交互时,系统会调用 onStart() 方法。在此方法中,开发者可以完成一些初始化工作,例如开始动画。 1.1.3. onResume():当 Activity 成为用户焦点并可以与用户进行交互时,系统会调用 onResume() 方法。在此方法中,开发者可以开始处理用户输入事件。 1.2. 运行阶段 在运行阶段,Activity 将完成以下几个步骤: 1.2.1. onPause():当 Activity 失去焦点并不再与用户进行交互时,系统会调用 onPause() 方法。在此方法中,开发者可以停止处理用户输入事件。 1.2.2. onStop():当 Activity 不再可见时,系统会调用 onStop() 方法。在此方法中,开发者可以完成一些清理工作,例如停止动画。 1.3. 销毁阶段 在销毁阶段,Activity 将完成以下几个步骤: 1.3.1. onDestroy():当 Activity 被销毁时,系统会调用 onDestroy() 方法。在此方法中,开发者可以完成一些清理工作,例如释放资源。 2. Activity 的启动方式 在 Java 中,可以通过以下方式启动一个 Activity: 2.1. 显式启动 显式启动是指通过明确指定要启动的 Activity 的类名来启动 Activity。例如: ```java Intent intent = new Intent(this, AnotherActivity.class); startActivity(intent); ``` 2.2. 隐式启动 隐式启动是指通过指定 Action、Category、Data 等信息来启动 Activity,系统将根据这些信息匹配合适的 Activity。例如: ```java Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.example.com")); startActivity(intent); ``` 3. Activity 的传值 在 Java 中,可以通过 Intent 对象来传递数据到另一个 Activity。具体步骤如下: 3.1. 在发送 Intent 时,通过 putExtra() 方法来添加数据: ```java Intent intent = new Intent(this, AnotherActivity.class); intent.putExtra("name", "张三"); intent.putExtra("age", 18); startActivity(intent); ``` 3.2. 在接收 Intent 时,通过 getIntent() 方法获取 Intent 对象,并通过 getXXXExtra() 方法获取数据: ```java Intent intent = getIntent(); String name = intent.getStringExtra("name"); int age = intent.getIntExtra("age", 0); ``` 4. Activity 的返回值 在 Java 中,可以通过 startActivityForResult() 方法启动一个 Activity,并在该 Activity 中设置 setResult() 方法来返回数据。具体步骤如下: 4.1. 在发送 Intent 时,通过 startActivityForResult() 方法启动另一个 Activity: ```java Intent intent = new Intent(this, AnotherActivity.class); startActivityForResult(intent, REQUEST_CODE); ``` 4.2. 在接收 Intent 时,通过 onActivityResult() 方法获取返回的数据: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String result = data.getStringExtra("result"); } } ``` 4.3. 在被返回的 Activity 中,通过 setResult() 方法设置返回的数据: ```java Intent intent = new Intent(); intent.putExtra("result", "返回数据"); setResult(RESULT_OK, intent); finish(); ``` 以上就是 Java 中 Activity详解,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值