Activity的LaunchMode和退出应用程序
2017-06-17 18:30
316 查看
1.Activity的启动模式 <1>Standard(默认-标准模式) 自己可以启动自己(会创新一个新的Activity) <2>SingleTop(顶单例模式) 在栈顶只允许有一个相同的Activity 自己不能启动自己 <3>SingleTask(内单例模式) 如果要启动的Activity存在,则干掉要启动的Activity上面的所有的Activity <4>SingleInstance(全局单例模式)2.退出应用程序 <1>递归退出 <2>栈退出 Application:多个组件之间数据共享(全局)因为页面太多就不放效果图了<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns: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:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" tools:context="com.zking.administrator.app6.MainActivity"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="#66ffff00"android:text="这是MainActivity"android:textSize="30sp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/tv_main_text"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="跳自己"android:onClick="jumpMain"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="跳B"android:onClick="jumpB"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="退出应用程序"android:onClick="exit"/></LinearLayout>
<?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:c 4000 ontext="com.zking.administrator.app6.BActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#66ff00ff" android:text="这是BActivity" android:textSize="30sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_b_text"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="跳MMain" android:onClick="jumpMain"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="退出应用程序" android:onClick="exit"/> </LinearLayout>
package com.zking.administrator.app6; 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.TextView; import com.zking.application.MyApplication; public class MainActivity extends AppCompatActivity { private TextView tv_main_text; private MyApplication myApplication; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_main_text = (TextView) findViewById(R.id.tv_main_text); //this打印当前地址 this.getTaskId()拿当前Activity所占任务的ID //如果你第一个或第二个ID不一样的话就代表有俩个栈,一样的话就代表一个栈 tv_main_text.setText("当前Activity实例(在内存里的地址):"+this+"\n当前任务栈"+this.getTaskId()); //获取MyApplication myApplication = (MyApplication) getApplication(); myApplication.add(this); } public void jumpMain(View view){ //自己跳自己 Intent intent=new Intent(this,MainActivity.class); //启动(栈用普通的方式启动) startActivity(intent); //递归的退出方式用startActivityForResult启动 //startActivityForResult(intent,0x101); } public void jumpB(View view){ //跳B页面 Intent intent=new Intent(this,BActivity.class); startActivity(intent); } //递归的退出方式 public void exit(View view){ //finish();//退出当前的Activity //finish会调用onDestroy //System.exit(0);//退出当前Activity //system不会用onDestroy //用myApplication退出 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("text","onDestroy"); } }
package com.zking.administrator.app6; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.zking.application.MyApplication; public class BActivity extends AppCompatActivity { private MyApplication myApplication; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_b); TextView tv_b_text= (TextView) findViewById(R.id.tv_b_text); tv_b_text.setText("当前Activity地址:"+this+"\nTastId:"+this.getTaskId()); //获取MyApplication myApplication = (MyApplication) getApplication(); myApplication.add(this); } public void jumpMain(View view){ //跳Main页面 Intent intent=new Intent(this,MainActivity.class); startActivity(intent); } //退出 public void exit(View view){ //finish();//退出当前的Activity //System.exit(0);//退出当前Activity //用myApplication退出 myApplication.exit(); } }用栈退出要写一个自定义的MyApplication
package com.zking.application; import android.app.Activity; import android.app.Application; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2017/6/17. */ public class MyApplication extends Application{ //定义一个对象集合 private List<Activity> activities=new ArrayList<>(); //写一个方法给集合加值 public void add(Activity activity){ activities.add(activity); } //写一个退出的方法 public void exit(){ //遍历activities for (Activity activity : activities) { //调用每一个activity的finish activity.finish(); } } }
相关文章推荐
- Activity的LaunchMode和退出应用程序
- Android-Activity的LaunchMode和退出应用程序
- Activity的LaunchMode和退出应用程序
- Activity管理类,用于Activity管理和应用程序退出
- 笔记:安卓完全退出应用程序出现闪退、返回上一个activity的问题
- Activity的退出应用程序
- 退出整个应用程序 以及 利用intent标志跳转到某个Activity
- Android 应用程序Activity管理类:用于Activity管理和应用程序退出
- Activity管理和应用程序的退出(推荐使用stack)
- 安卓Activity的退出应用程序
- 通用于Activity管理和应用程序退出
- 关于android 多个Activity应用程序按返回键退出程序问题
- Android退出一个多Activity应用程序的方法
- 在一个activity中kill其他的activity及退出整个应用程序
- [Activity生命周期] Android 完美退出应用程序
- 用于Activity管理和应用程序退出
- Activity管理类,随时随地退出应用程序
- 应用程序Activity管理类:用于Activity管理和应用程序退出
- 关于android 多个Activity应用程序按返回键退出程序问题
- 用于Activity管理和应用程序退出