Activity的四种启动模式

Activity的四种启动模式:

             1.standard:该启动模式为Android默认启动模式,每当启动一个activity就会在任务栈中创建一个                                       activity,这种模式默认的但是非常的浪费空间,但是可以有效的保存之前启动的activity。用于保证之前页面不丢失的时           候。

             2.single Top:该启动模式是在查看任务栈顶和你将要启动的activity是否是一个activity,是一个就直接复用,否则就新创一个实例,这个经常用于类似聊天界面,当有人给你发消息时更新activity。

              3.single Task:该启动模式是在任务栈中看是否有和你一样的activity,有则直接把该activity之上的activity全部弹出使之置于栈顶。常用于一个程序的入口处。

              4.single Instance:该启动模式是再创建一个任务栈把activity放进去。此模式用于不同应用调用一个activity时应用。用于程序和界面分开的时候。

 

 

 

   自己写的一个demo:

四个activity基本一样就只发一个了

Java部分:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class standard extends AppCompatActivity implements View.OnClickListener{

    private Button btn_standard;
    private Button btn_singletop;
    private Button btn_singletask;
    private Button btn_singleinstence;
    private TextView tv_activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_standard);
        Log.i("TAG","intent:_______________"+this.toString());
        initView();
    }

    private void initView() {
        btn_standard = (Button) findViewById(R.id.btn_standard);
        btn_singletop = (Button) findViewById(R.id.btn_singletop);
        btn_singletask = (Button) findViewById(R.id.btn_singletask);
        btn_singleinstence = (Button) findViewById(R.id.btn_singleinstence);
        tv_activity = (TextView) findViewById(R.id.tv_activity);
        btn_standard.setOnClickListener(this);
        btn_singletop.setOnClickListener(this);
        btn_singletask.setOnClickListener(this);
        btn_singleinstence.setOnClickListener(this);
        tv_activity.setText(this.toString());
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_standard:
                this.startActivity(new Intent(this,standard.class));
                break;
            case R.id.btn_singletop:
                this.startActivity(new Intent(this,singleTop.class));
                break;
            case R.id.btn_singletask:
                this.startActivity(new Intent(this,singleTask.class));
                break;
            case R.id.btn_singleinstence:
                this.startActivity(new Intent(this,singleInstance.class));
                break;
        }
    }
}

xml部分:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context="com.example.administrator.myapplication.standard">
    <TextView
        android:text="standard"
        android:textSize="50px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/tv_activity"
        android:textColor="@color/colorAccent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn_standard"
        android:text="standard"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn_singletop"
        android:text="singletop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn_singletask"
        android:text="singletask"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn_singleinstence"
        android:text="singleinstance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

AndroidManifest.xml部分:

 <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".singleTop"
            android:launchMode="singleTop" />
        <activity
            android:name=".singleTask"
            android:launchMode="singleTask" />
        <activity android:name=".singleInstance"
            android:launchMode="singleInstance"/>
        <activity android:name=".standard"
            android:launchMode="standard">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

以上就是我写的个人理解了,作为菜鸟的我第一次写,请多多支持。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值