Android应用开发入门经典学习笔记01--理解Android Activity

来源:互联网 发布:淘宝图片一般像素多少 编辑:程序博客网 时间:2024/06/06 09:23
  • 一个activity会被创建,启动,恢复,暂停和销毁,这些都是生命周期中的事件,每一个事件都可以覆盖Activity类中的一个回调方法,以便在该事件发生时执行某些动作。例如onCreate回调方法。

  • 一个Activity是一个应用程序组件,它向用户提供了一个画面,用户与这个画面的交互能够完成拨打电话,拍照,发送电子邮件或者查看地图之类的事情。每个Activity都有一个窗口,在这个窗口中能够绘制其用户界面。该窗口通常充满整个屏幕,但也可以比屏幕小或者浮动在其他窗口之上。

  • 回退栈是一个存放Activity的栈,每个Activity被启动一次,就会在此栈中存放一次(例如ActivityA,ActivityB,ActivityA,ActivityB,…….)。如果不改变android应用的默认行为,每点击一次back(返回)按钮,会按照栈中列表调用相关Activity。可通过设置flag方法来改变默认行为,例如: intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
    上述flag保证栈中只出现一次,即某个Activity已经在栈中出现了,则不会继续添加。
    可不使用startActivity(intent)而替换使用startActivityForResult(intent,
    requestCode)及重写onActivityResult(requestCode,resultCode,intent)来用于从另一个Activity中请求数据。

  • 显示intent:

    Intent intent = new Intent(ActivityB.this, ActivityA.class);
  • 隐式intent:

    清单文件
    <intent-filter>        <action android:name="android.intent.action.SEND" />        <category android:name="android.intent.category.DEFAULT" />        <data android:mimeType="text/plain" />    </intent-filter>
    ActivityB程序文件
    Intent intent = getIntent();    if (intent != null)    {        String action = intent.getAction();        String type = intent.getType();        if (Intent.ACTION_SEND.equals(action) && "text/plain".equals(type))        {            t.setText(intent.getStringExtra(Intent.EXTRA_TEXT));        }        else        {            //handle intent data from ActivityA        }    }
  • 现在ActivityB能够处理其他Activity发起的Intent.ACTION_SEND动作并且类型为“plain/text”的intent的处理请求了。

  • 所以,一个intent可以是具体的,比如启动某个特定的Activity;也可是是宽泛的,如请求满足处理特定mime类型的Activity。

  • 不仅可以使用Intent传递数据(利用putExtra)等信息,也可以使用Intent启动其他应用程序中的外部activity类。例如,启动内置的Web浏览器并提供一个URL地址,启动内置的拨号应用并提供一个电话号码,启动内置的地图应用程序并提供一个位置等等。例如启动Web浏览器浏览一个特定的URL。

    Uri address = Uri.parse("http://developer.android.com/");    Intent androidDocs = new Intent(Intent.ACTION_VIEW, address);    startActivity(androidDocs);
  • 浏览器会启动并进入前台,从而导致原先的调用Activity会暂停并进入后台。当用户结束了浏览器并点击了Back按钮时原先的Activity就会恢复。

  • 对于每一种Activity状态,都有一个对应的回调方法,onCreate(), onPause(), onResume(),
    onStop和onDestroy()。 创建清理资源场所可以按照如下方法对照: onStart()<—–>onStop();
    onPause()<——>onResume();

0 0