Android四大组件之一:Activity

一.什么是Activity
   Activity是android的四大组件之一,提供与用户交互的可视化界面(GUI),例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制你想要的View。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。 简单的说activity就是UI与交互。

  一个应用程序通常由多个Activity组成,他们通常是松耦合关系。通常, 一个应用程序中的activity被指定为"main"activity,就像java的入口main函数,当第一次启动应用程序的时候呈现给用户的那个activity

每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。

  当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分。  
二.Activity的生命周期

原因:
了解Activity的生命周期的根本目的就是为了设计用户体验更加良好的应用。因为Activity就相当于MVC中的View层,是为了更好的向用户展现数据,并与之交互。了解Activity的生命周期和各回调方法的触发时机,我们可以更好的在合适的地方向用户展现数据(因为每个应用每个Activity的作用不同,所以具体每个回调方法的最佳实践不好把握,但是只要遵循最基本的原则即可),保证数据的完整性和程序的良好运行。


activity生命周期解析
1).activity首次被创建时,回调用onCreate()方法.显示给用户时,调用onResume()方法,此时activity位于栈顶。 应该在onCreate()方法里执行设置“全局”状态(如定义布局)
2 ).当另一个activity覆盖当前的activity时,回调用onPause()方法,并将当前的activity数据保存下来
3 ).此时,如果想让一个activity不显示的话,调用onStop()方法停止该activity。如果想让一个activity回到前台,重新获得焦点,调用onResume()方法
4 ).onStop()后,调用onDestroy()方法销毁activity,也是该activity最后一次调用。也可以手动调用finish()结束activity。 在onDestroy()方法里释放所有剩余资源。
5 ).当内存资源不足时,可能杀死处于onPause()的activity所在进程。但是这种极端情况还是很少 发现的。


三.Activity的使用
1.自定义activity的类名并继承activiy或者activity的子类
public class MainActivity extends Activity {
2.重写onCreate()方法,在该方法中调用setContentView()方法来设置要显示的视图;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
3.在AndroidManifest.xml文件中配置该Activity;
 <activity
            android:name="类名"
            android:icon="图标"
            android:theme="activity的主题"
            android:label="activity显示的标题" >
        </activity>
4.启动该activity:
 Intent intent = new Intent(MainActivity.this,MainActivity.class);
 startActivity(intent);
5关闭该activity:finish(,直接关闭当前activity);

四.Activity间的数据交流

1.传递数据到新启动的Activity

传递一个数据:

                     前一个Activity:

         Intent intent = new Intent(X.this,Y.class);
        intent.putExtra("name","mkk");
        startActivity(intent);

                     后一个Activity :   

         Intent intent = getIntent();
        String name = intent.getStringExtra("name");

传递多个数据:

                     前一个Activity:

         Intent intent = new Intent(X.this,Y.class);
        Bundle bundle = new Bundle();
        bundle.putString("name","mkk");
        bundle.putInt("age",24);
        intent.putExtra("message",bundle);
        startActivity(intent);

                     后一个Activity:

        Intent intent = getIntent();
        Bundle bundle = intent.getBundleExtra("message");
        String name = bundle.getString("name");
        int age = bundle.getInt("age");

2.多个Activity之间的交互

除了上述的情况,还有的就是从第二个activity返回数据到第一个activity中。

使用流程:
               
                第一个activity
        //
        Intent intent = new Intent(X.this, Y.class);
        startActivityForResult(intent,  requestCode);
同时重写 onActivityResult(int requestCode, int resultCode, Intent data)
requestCode 请求码:
    决定该方法是由哪个请求结果所触发的
resultCode 结果码:
    决定数据来自哪个activity
先判断哪个activity传过来的数据,在进行数据解析。
                 第二个activity
        Intent intent = getIntent();
        Bundle bundle = intent.getBundleExtra("message");
        String name = bundle.getString("name");
        int age = bundle.getInt("age");
       
        setResult( resultCode,intent);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值