色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 實現一鍵退出所有的activity

實現一鍵退出所有的activity 時間:2018-09-28      來源:未知

方式一:動態注冊廣播實現

------- 思路:給每一個運行的Activity都設置廣播監聽器,并

且監聽的廣播監聽器的Type都是相同的

--------動態注冊廣播監聽器并實施監聽

--------這樣當所有監聽的Activity同類型的Type就會監聽到,

--------然后Finsh(),這樣就可以實現一鍵退出所有的 Activity

方式二:把所有的activty放入同一個List中,從List中

取出所有activity調用finish()方法

方式三:拋出異常

方式四:SingleTask

———————————————————————————

代碼實現:動態注冊廣播實現

在一個Activity中發送廣播

package demo.baidumapsdk.onekey_backactivity;

import android.content.Intent;

import android.content.IntentFilter;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

//發送廣播

public void send(View view){

//發送廣播

Intent intent = new Intent();

intent.setAction("back");//設置發送廣播類型

MainActivity.this.sendBroadcast(intent);//發送廣播

}

___________________________________________________________

在另一個Activity中動態注冊廣播并監聽

package demo.baidumapsdk.mychar1;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import com.hyphenate.chat.EMClient;

import com.hyphenate.exceptions.HyphenateException;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//動態注冊廣播

MyReceive myReceive = new MyReceive();

IntentFilter filter = new IntentFilter();

filter.addAction("back");

registerReceiver(myReceive,filter);

———————————————————————————

在動態注冊廣播監聽的Activity中寫類實現BroadCastReceive,并重寫onReceive方法

package demo.baidumapsdk.mychar1;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.widget.Toast;

//動態注冊廣播監聽

public class MyReceive extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String intent1 = intent.getAction();//獲取廣播類型

//TODO

//在這里就可以操作一些事情,比如退出Activity

Toast.makeText(context,intent1,Toast.LENGTH_SHORT).show();

}

}

___________________________________________________________

代碼實現方式二:把所有的activty放入同一個List中,從List中

取出所有activity調用finish()方法

public class MainActivity extends AppCompatActivity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//把當前Activity裝進list,類名.對象

Util_List.list.add(this);

//創建Button

Button button = new Button(this);

button.setText("啟動A");

setContentView(button);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(MainActivity.this,TwoActivity.class);

startActivity(intent);

}

});

}

@Override

protected void onDestroy() {

Util_List.list.remove(this);

super.onDestroy();

Log.i("Fslog","MyActivity的OnDestory被執行");

}

}

———————————————————————————

public class TwoActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//將當前的Activity裝進list

Util_List.list.add(this);

//不依賴布局文件,自己創建

Button button = new Button(this);

button.setText("退出");

setContentView(button);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

TwoActivity.this.finish();

}

});

}

@Override

protected void onDestroy() {

//從list中取出所有的Activity,執行finsh方法

//在遍歷值前應該判斷:如果你遍歷的是一個空的Activity對象,

// for-each循環將拋出NullPointerException,因此在遍歷前你總是應該檢查空引用。

if (Util_List.list!=null){

//遍歷:第一部分:是遍歷的對象(Activity),第二部

分:是存放對象的容器(Util_List.list)

for (Activity activity:Util_List.list){

activity.finish();

}

}

super.onDestroy();

}

}

———————————————————————————

public class Util_List {

public static final ArrayList list = new ArrayList();

}

———————————————————————————

方式三:使用啟動模式SingleTask

在這個地方:我們要注意啟動模式設置為SingleTask必須是入口組件

SingleTask是單一實例,后會回調onNewIntent()

onNewIntent的回調機制:launchMode為singleTask的時候,通過Intent啟到一個Activity,如果系統已經存在一個實例,系統就會將請求發送到這個實例上,但這個時候,系統就不會再調用通常情況下我們處理請求數據的onCreate方法,而是調用onNewIntent方法, 不要忘記,系統可能會隨時殺掉后臺運行的Activity,如果這一切發生,那么系統就會調用onCreate方法,而不調用onNewIntent方法,一個好的解決方法就是在onCreate和onNewIntent方法中調用同一個處理數據的方法

__________________________________________________________________

代碼:

android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">

android:launchMode="singleTask">

 

 

———————————————————————————

@Override

protected void onNewIntent(Intent intent) {

finish();

super.onNewIntent(intent);

}

上一篇:Android傳感器開發

下一篇:Unity3D基礎—基本物體和基本組件介紹

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 亚洲老鸭窝一区二区三区 | 国产在线一区二区在线视频 | 丰满少妇做爰视频爽爽和 | 亚洲国产天堂久久综合2261144 | 亚洲Av无码一区二区三区在线观看 | 精品一卡2卡三卡4卡乱码仙踪林 | 久久精品国产只有精品66 | 午夜福利YW在线观看2020 | 国产天美传媒性色AV出轨 | 大地资源网高清在线观看 | AV综合网男人的天堂 | 最新亚洲人成无码网站 | 精品1区2区3区4区产品乱码9 | 夜夜揉揉日日人人 | 日本熟日本熟妇在线视频 | 最新无码国产在线播放 | 性色AV无码一区二区三区人妻 | 午夜福利国产成人无码 | 嫩草在线 | 性少妇freesexvideos强迫 | 青青草人人 | 大量国产私密保健视频 | 亚洲色精品VR一区二区三区 | 日韩少妇成熟A片无码专区 av色播 | 亚洲精品国品乱码久久久久 | 十八禁真人啪啪免费网站 | 亚洲高清无吗 | 囯产香蕉97碰碰碰视频在线观看 | 午夜亚洲国产理论片 | 亚洲鲁丝片一区二区三区 | 巨茎中出肉欲人妻在线视频 | 亚洲成a人片在线不卡一二三区 | 熟妇无码乱子成人精品 | 青青久在线视频免费观看 | 无码人妻精品中文字幕 | 最新中文字幕AV无码不卡 | 内射老妇女BBWXOGOD | 中文字幕精品一二三四五六七八 | 色翁荡息又大又硬又粗又爽 | 字幕专区码中文欧美在线 | 天天日本天天谢 |