欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 中 退出多個(gè)activity的經(jīng)典方法

 更新時(shí)間:2016年09月21日 13:39:58   作者:超超boy  
這篇文章主要介紹了Android 中 退出多個(gè)activity的經(jīng)典方法 的相關(guān)資料,本文給大家分享兩種方法,在這小編給大家推薦使用第一種方法,對(duì)此文感興趣的朋友可以參考下

1.使用List集合方式

用list保存activity實(shí)例,然后逐一干掉

import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Application;
import android.content.DialogInterface;
import android.content.Intent;
public class SysApplication extends Application {
private List<Activity> mList = new LinkedList<Activity>();
private static SysApplication instance;
private SysApplication() {
}
public synchronized static SysApplication getInstance() {
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}
public void exit() {
try {
for (Activity activity : mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// System.exit(0);//去掉這個(gè)
}
}
@Override
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}

在每個(gè)Activity的onCreate方法中添加類似代碼:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SysApplication.getInstance().addActivity(this);
}

  在需要退出程序的時(shí)候,調(diào)用:

SysApplication.getInstance().exit();

簡(jiǎn)而言之,通過(guò)單例模式把每個(gè)Activity 的引用添加到一個(gè)全局鏈表中,每次退出程序調(diào)用System.exit(0)時(shí),先調(diào)用鏈表中Activity 的finish方法 

優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,邏輯清晰

2.使用廣播

推薦!!好方便?。?br />

基本邏輯就是:定義一個(gè)BaseActivity,在這個(gè)Activity中綁定廣播,在廣播的onReceive方法中調(diào)用finish();然后以后的Activity都繼承這個(gè)Activity,退出時(shí)發(fā)送廣播,退出BaseActivity,父activity都退出了,子activity肯定退出。

代碼如下:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
public class BaseActivity extends AppCompatActivity {
protected BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
@Override
public void onResume() {
super.onResume();
// 在當(dāng)前的activity中注冊(cè)廣播
IntentFilter filter = new IntentFilter();
filter.addAction("ExitApp");
this.registerReceiver(this.broadcastReceiver, filter);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy(); //解除綁定
this.unregisterReceiver(this.broadcastReceiver);
}
}

  一個(gè)Activity實(shí)例:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ActivityC extends BaseActivity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_c);
SysApplication.getInstance().addActivity(this);
btn = (Button) findViewById(R.id.acticityc_btn);
//關(guān)閉所有的activity
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
/**
* 捕獲手機(jī)物理菜單鍵
*/
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){//&& event.getAction() == KeyEvent.ACTION_DOWN
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
myExit();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
protected void myExit() {
//第二種退出方法
// SysApplication.getInstance().exit();
Intent intent = new Intent();
intent.setAction("ExitApp");
this.sendBroadcast(intent);
//super.finish();
}
@Override
protected void onStop() {
super.onStop();
Log.i("tag","ActivityC-onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("tag","ActivityC-onDestroy");
}
}

  就是在退出的地方調(diào)用這個(gè):

private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){//&& event.getAction() == KeyEvent.ACTION_DOWN
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
myExit();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
protected void myExit() {
//第二種退出方法
// SysApplication.getInstance().exit();
Intent intent = new Intent();
intent.setAction("ExitApp");
this.sendBroadcast(intent);
//super.finish();
}

  優(yōu)點(diǎn):方便,方便??!只需要在退出的地方發(fā)送廣播就可以?。?br />

這是我的退出時(shí)的輸出:

08-09 15:33:48.869 26919-26919/example.com.closeapp I/tag: MainActivity-onPause
08-09 15:33:49.279 26919-26919/example.com.closeapp I/tag: MainActivity-onStop
08-09 15:33:51.569 26919-26959/example.com.closeapp D/OpenGLRenderer: endAllStagingAnimators on 0x55850598b0 (RippleDrawable) with handle 0x5585041510
08-09 15:33:56.079 26919-26919/example.com.closeapp I/tag: MainActivity-onDestroy
08-09 15:33:56.089 26919-26919/example.com.closeapp I/tag: ActivityB-onDestroy
08-09 15:33:56.399 26919-26919/example.com.closeapp I/tag: ActivityC-onDestroy 

以上所述是小編給大家介紹的Android 中 退出多個(gè)activity的經(jīng)典方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android實(shí)現(xiàn)橫豎屏切換的實(shí)例代碼

    Android實(shí)現(xiàn)橫豎屏切換的實(shí)例代碼

    本篇文章主要介紹了Android實(shí)現(xiàn)橫豎屏切換的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Android開(kāi)發(fā)Compose框架使用開(kāi)篇

    Android開(kāi)發(fā)Compose框架使用開(kāi)篇

    這篇文章主要為大家介紹了Android開(kāi)發(fā)Compose框架使用開(kāi)篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • ANDROID應(yīng)用程序的混淆打包分享

    ANDROID應(yīng)用程序的混淆打包分享

    這篇文章主要介紹了ANDROID應(yīng)用程序的混淆打包,有需要的朋友可以參考一下
    2014-01-01
  • Android實(shí)現(xiàn)底部導(dǎo)航欄的主界面

    Android實(shí)現(xiàn)底部導(dǎo)航欄的主界面

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部導(dǎo)航欄的主界面 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Android中RecyclerView拖拽、側(cè)刪功能的實(shí)現(xiàn)代碼

    Android中RecyclerView拖拽、側(cè)刪功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android中RecyclerView拖拽、側(cè)刪功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2017-09-09
  • android studio集成ijkplayer的示例代碼

    android studio集成ijkplayer的示例代碼

    本篇文章主要介紹了android studio集成ijkplayer的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Android實(shí)現(xiàn)滑動(dòng)刻度尺效果

    Android實(shí)現(xiàn)滑動(dòng)刻度尺效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)滑動(dòng)刻度尺效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Android仿Iphone屏幕底部彈出半透明PopupWindow效果

    Android仿Iphone屏幕底部彈出半透明PopupWindow效果

    這篇文章主要為大家詳細(xì)介紹了Android仿Iphone屏幕底部彈出半透明PopupWindow效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android自定義實(shí)現(xiàn)淘寶下拉刷新效果

    Android自定義實(shí)現(xiàn)淘寶下拉刷新效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義實(shí)現(xiàn)淘寶下拉刷新效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 詳解Android性能優(yōu)化之啟動(dòng)優(yōu)化

    詳解Android性能優(yōu)化之啟動(dòng)優(yōu)化

    一款應(yīng)用的第一印象很重要,第一印象往往決定了用戶的去留。打開(kāi)一款應(yīng)用,如果速度很快,很順暢,那么很容易讓人覺(jué)得這款應(yīng)用背后的技術(shù)實(shí)力很強(qiáng),用戶潛意識(shí)中會(huì)對(duì)這款應(yīng)用更加的信賴。本文將詳細(xì)介紹Android性能優(yōu)化之啟動(dòng)優(yōu)化。
    2021-06-06

最新評(píng)論