Activity的启动模式
<1>Standard(默认-标准模式)
自己可以启动自己
<2>SingleTop(顶单例模式)
在栈顶只允许有一个相同的Activity
自己不能启动自己
<3>SingleTask(内单例模式)
如果要启动的Activity存在,则干掉要启动的Activity上面的所有的Activity
<4>SingleInstance(全局单例模式)
案例演示如下:
XML代码:
主界面main_activityxml代码:
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.example.cookie.android0617closeapplication.MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_main_text"
android:text="这是主界面" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="jumpSelf"
android:text="跳自己"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.example.cookie.android0617closeapplication.BActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是B界面累"
android:textSize="35sp"
android:background="#6600"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tb_b_word"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="jumpMain"
android:text="跳到主页面"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="exit"
android:text="退出应用程序"/>
</LinearLayout>
android:layout_margin="10dp" android:onClick="jumpOther" android:text="跳别人"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="退出应用程序" android:onClick="exit"/></LinearLayout>
activity_b.xml代码
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.example.cookie.android0617closeapplication.BActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是B界面累"
android:textSize="35sp"
android:background="#6600"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tb_b_word"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="jumpMain"
android:text="跳到主页面"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="exit"
android:text="退出应用程序"/>
</LinearLayout>
主界面的MainActivity.java代码:
public class MainActivity extends Activity {
private TextView tv_main_text;
private MyApplication myApplication;
private long firstTime=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_main_text = (TextView) findViewById(R.id.tv_main_text);
tv_main_text.setText("当前Activity实例:"+this+"\n当前任务栈"+this.getTaskId());
//1.获取Myapplication
myApplication = (MyApplication) getApplication();
myApplication.add(this);
}
public void jumpSelf(View view){
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
}
public void jumpOther(View view){
Intent intent=new Intent(this,BActivity.class);
//startActivity(intent);
startActivityForResult(intent,0x22);
}
public void exit(View view){
finish();//退出当前的Activity
//finish()和System.exit(0)都是退出当前的Activity,
//但是finish()会调用onDestroy()方法,
// System.exit(0);
myApplication.exit();
}
// @Override
// protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
// exit(null);
// }
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("test","onDestroy");
}
}
BActivity.java代码:
public class BActivity extends AppCompatActivity {
private TextView tb_b_word;
private MyApplication myApplication;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
tb_b_word = (TextView) findViewById(R.id.tb_b_word);
tb_b_word.setText("当前Activity地址:"+this+"\nTaskId:"+this.getTaskId());
//1.获取Myapplication
myApplication = (MyApplication) getApplication();
myApplication.add(this);
}
public void jumpMain(View view){
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
}
public void exit(View view){
// finish();
// System.exit(0);
myApplication.exit();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("test","onDestroy");
}
}