android组件:活跃界面activity

activity中Activity  fragmentActivity  AppCompatActivity的区别:

Activity是最基础的一个,是其它类的直接或间接父类。
Activity中只能使用系统自带的host Fragment(API Level 11中加入),对应getFragmentManager方法来控制Activity和Fragment之间的交互。

FragmentActivity
在v4包中引入FragmentActivity,FragmentActivity间接继承自Activity,并提供了对v4包中support Fragment的支持。
在FragmentActivity中必须使用getSupportFragmentManager方法来处理support Fragment的交互。也可以处理support Fragment的嵌套使用。 

AppCompatActivity
AppCompatActivity继承自FragmentActivity,同时取代了ActionBarActivity。
AppCompatActivity支持ActionBar功能,同时更推荐使用ToolBar。AppCompatActivity为支持Material Design风格控件提供了便利。 

以上仅作了解,是基础。

设置应用启动页:

<activity
    android:configChanges = "keyboardHidden|orientation"
    android:name = ".module.splash.view.SplashActivity">
//标签内的就是定义的app的主界面(第一次启动进来的就是这个)
    <intent-filter>
        <action android:name = "android.intent.action.MAIN"/>

        <category android:name = "android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

activity的隐式启动标记:

ACTION_PICK

启动一个子Activity,从提供的数据列表中选取一项

ACTION_SEARCH

启动一个Activity,执行搜索动作

ACTION_SENDTO

启动一个Activity,向数据提供的联系人发送信息

扫描二维码关注公众号,回复: 9811971 查看本文章

ACTION_SEND

启动一个可以发送数据的Activity

ACTION_VIEW

最常用的动作,对以Uri方式传送的数据,根据Uri协议部分以最佳方式启动相应的Activity进行处理。对于http:address将打开浏览器查看;对于tel:address将打开拨号界面并呼叫指定的电话号码

ACTION_WEB_SEARCH

打开一个Activity,对提供的数据进行Web搜索

ACTION_ANSWER

打开接听电话的Activity,默认为Android内置的拨号界面

ACTION_CALL

打开拨号盘界面并拨打电话,使用Uri中的数字部分作为电话号码

ACTION_DIAL

打开内置拨号界面,显示Uri中提供的电话号码

ACTION_EDIT

打开一个Activity,对所提供的数据进行编辑操作

ACTION_DELETE

打开一个Activity,对所提供的数据进行删除操作

ACTION_INSERT

打开一个Activity,在提供数据的当前位置插入新项 

示例:

Intent intent = new Intent(Intent.ACTION_CALL);
//设置隐式启动的标志
intent.setData(Uri.parse("tel:10086"));

startActivity(intent);

需要注意的是,拨打电话还需要权限,我们还得在AndroidManifest.xml中添加这么一句:

<uses-permission android:name="android.permission.CALL_PHONE" />

activity的启动:

Intent intent = new Intent(this, MyActivity2.class);

startActivity(intent); 

activity的启动模式:

standard:

标准模式,也是默认模式。每当我们启动一个Activity,系统就会相应的创建一个实例,不管这个实例是否已经存在。

singleTop:

栈顶复用模式,如果要启动的Activity处于栈的顶部,那么此时系统不会创建新的实例,而是直接打开此页面,同时它的onNewIntent()方法会被执行,可以通过Intent进行传值,而且它的onCreate(),onStart()方法不会被调用,因为它并没有发生任何变化。

singleTask:

栈内复用模式,如果栈中存在这个Activity的实例就会复用这个Activity,不管它是否位于栈顶,复用时,会将它上面的Activity全部出栈,因为singleTask本身自带clearTop这种功能。并且会回调该实例的onNewIntent()方法。

singleInstance:

单实例模式,该模式具备singleTask模式的所有特性外,与它的区别就是,这种模式下的Activity会单独占用一个Task栈,具有全局唯一性。以singleInstance模式启动的Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。

activity的通信方式:

Intent intent = new Intent(this, MyActivity2.class);
startActivityForResult(intent, 500); // 请求码 500

//获取返回的结果信息
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data); 
      
        // 实际正规写法应该是这样:
        // requestCode和startActivityForResult保持一致
        // resultCode和setResult(200) 200 保持一致
        // 如果返回了intent 就需要判断 null != data
        if (requestCode == 500 && resultCode == 200 && null != data) {
            // ... 实际业务逻辑处理
        }
    }
这是第二个页面返回的代码(包含返回的值)
Intent intent = new Intent();
intent.putExtra("item", item);

// 返回结果码,还返回数据,数据用Intent传输
setResult(200, intent);
// 一定要finish(); 否则不结束当前MyActivity1,无法返回给MyActivity1
finish();


activity的生命周期:

1.onCreate()

  这个方法在每一个Activity类都会有,当我们新建一个Activity类时,一定会重写父类的onCreate方法,onCreate方法会在Activity第一次被创建时调用。我们应该在这个方法中完成Activity的初始化操作,比如说加载布局,初始化布局控件,绑定按钮事件等。

2.onStart()

  这个方法在Activity由不可见变为可见时调用。

3.onResume()

  这个方法在Activity准备好喝用户交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态。

4.onPause()

  这个方法在系统准备去启动或者恢复另一个Activity的时候调用。

5.onStop()

  这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的activity,那么,onPause()方法会得到执行,而onStop()方法并不会执行。

6.onDestory()

  这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。

7.onRestart()

  这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。

 

Activity的四种状态

  每个Activity在其生命周期中最多可能会有四种状态。

1.运行状态

  当一个Activity位于返回栈(关于返回栈的概念下面再介绍)的栈顶时,这时Activity就处于运行状态,系统会将处于栈顶的Activity显示给用户。

2.暂停状态

  当一个Activity不再处于栈顶位置,但仍然可见,这时Activity就进入了暂停状态。初学者可能会有这样的疑问,既然Activity都已经不在栈顶了,怎么会还可见呢,这是因为并不是每一个Activity都会占满整个屏幕的,比如对话框形式的Activity只会占用屏幕中间的部分区域。

3.停止状态

   当一个Activity不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。

4.销毁状态

  当一个Activity从返回栈中移除后就变成了销毁状态。

结语:

以上就是对activity的基本认识,希望对大家有帮助。

发布了58 篇原创文章 · 获赞 10 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_34203714/article/details/101702346