Android四大组件之Activity

2020-04-08  本文已影响0人  极客天空

启动模式

1 Standard 标准模式

说明: Android创建Activity时的默认模式,假设没有为Activity设置启动模式的话,默觉得标准模式。每次启动一个Activity都会又一次创建一个新的实例入栈,无论这个实例是否存在。

2 SingleTop 栈顶复用模式

说明:分两种处理情况:须要创建的Activity已经处于栈顶时,此时会直接复用栈顶的Activity。不会再创建新的Activity;若须要创建的Activity不处于栈顶,此时会又一次创建一个新的Activity入栈,同Standard模式一样。

3 SingleTask 栈内复用模式

说明:若须要创建的Activity已经处于栈中时,此时不会创建新的Activity,而是将存在栈中的Activity上面的其他Activity所有销毁,使它成为栈顶。

4 SingleInstance 单实例模式

说明: SingleInstance比較特殊,是全局单例模式,是一种加强的SingleTask模式。它除了具有它所有特性外,还加强了一点:具有此模式的Activity仅仅能单独位于一个任务栈中。

跳转方式

1 显示启动

Intrent 内部直接声明要启动的activity所对应的的class

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intnet);
2 隐式启动

进行三个匹配,一个是activity,一个是category,一个是data,全部或者部分匹配,应用于广播原理
清单文件中 里配置activity属性,activity的名字要和跳转内容一样

<activity 
    android:name="com.exanple.android.tst.secondActivity"
    android:label = @string/title>
    <intent=filter>
        <action android:name="com.exanple.android.tst.secondActivity/>
        <category android:name="android.intent.category.DEFAULT"/>
    <intent-filter/>
</activity>

在需要跳转的地方

Intent intent = new Intent("com.example.android.tst.secondActivity");
startActivity(intnet);
3 跳转后再返回,能获取返回值
Intent in = new Intent(MainActivity.this,OtehrActivity.class);
in.putExtra("a",a);
startActivityForResult(in,1000);

在OTherActivity中设置返回值

Intent int = new Intent();
int.putExtra("c",c);
setResult(1001,int);
finish();

在MainActivity中获取返回值

@Override
protected void onActivityResult(int requestCode, int resultCode ,Intent data) {
    super.onActivityResult(requestCode,resultCode,data);
    if(requestCode == 1000){
        if(resultCode == 1001){
            int c = data.getExtra("c",0);
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读