在多Activity開發中,有可能是自己應用之間的Activity跳轉,或者夾帶其他應用的可複用Activity。可能會希望跳轉到原來某個Activity執行個體,而不是產生大量重複的Activity。
這需要為Activity配置特定的載入模式,而不是使用預設的載入模式。
載入模式分類及在哪裡配置
Activity有四種載入模式:
- standard
- singleTop
- singleTask
- singleInstance
設定的位置在AndroidManifest.xml檔案中activity元素的android:launchMode屬性:
<activity android:name="ActB" android:launchMode="singleTask"></activity>
package net.blog.vtion;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class FirstActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
textView.setText(this + "");
Button button = new Button(this);
button.setText("go actA");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(FirstActivity.this, FirstActivity.class);
startActivity(intent);
}
});
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(textView);
layout.addView(button);
this.setContentView(layout);
}
}
可見是ActA –> ActA的例子。在介面中列印出對象的toString值可以根據hash code識別是否建立新ActA執行個體。
可以多點幾次。發現每次都建立了該Activity的新執行個體。standard的載入模式就是這樣的,intent將發送給新的執行個體。