Android Activity 启动模式

一共四种启动方式:

  1. standard
  2. singleTop
  3. singleTask
  4. singlelnstance

standard

standard启动模式每次都会新建一个activity入栈。
这是MainActivity类中的内容

public class MainActivity extends AppCompatActivity {
    private Button btnClick;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("MainActivity", this.toString());
        btnClick = (Button)findViewById(R.id.btnClick);
        btnClick.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent inter = new Intent(
                        MainActivity.this,
                        MainActivity.class
                );
                startActivity(inter);
            }
        });
    }
}

向布局文件中添加一个button

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="toFirst"
        android:id="@+id/btnClick"/>

点击button会打开一个新的MainActivity.

singleTop

singleTop这种启动模式与上一种差距不大,但是要打开的窗口位于栈顶的时候,就不会在添加了,避免了重复打开的资源浪费。但是不是在栈顶,即便已经打开了,也要再打开一次。

只需要在AndroidManifest.xml种添加一句话就好

    <activity android:name=".MainActivity" android:launchMode="singleTop">
            <!--其他内容-->  
    </activity>

然后新建布局文件,内容随意,接着在上一个java类中添加内部类:


public class MainActivity extends AppCompatActivity {
    private Button btnTop;
    protected void onCreate(Bundle savedInstanceState)
    /*
        上边已经有的
    */
        Button btnTop = (Button)findViewById(R.id.btnTop);
        btnTop.setOnClickListener(new TClicklistener());
    }
    class TClicklistener implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(
                    MainActivity.this,
                    Main2Activity.class
            );
            startActivity(intent);
        }
    }
}

在第一个布局文件中,随便添加一个按钮。
然后就能看见点击第一个按钮不会出现新的窗口,但是点击第二个就会弹出新窗口

singleTask

每次启动时都会检查当前栈中是否存在,若存在,则将之上的全部出栈,若没有,则创建新页面

        <activity
            android:name=".MainActivity"
            android:launchMode="singleTask">
           <!--其他内容-->
        </activity>

如此就好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值