久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

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

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

方式(shi)一:動態注冊廣(guang)播實現

------- 思路(lu):給每一個運(yun)行的Activity都(dou)設置廣播(bo)監聽(ting)器,并

且監聽(ting)的廣(guang)播監聽(ting)器的Type都是相同(tong)的

--------動態注冊(ce)廣播監聽(ting)器并實施(shi)監聽(ting)

--------這樣當所(suo)有監聽(ting)(ting)的(de)Activity同(tong)類型的(de)Type就會監聽(ting)(ting)到,

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

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

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

方(fang)式三:拋出異常

方式四:SingleTask

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

代碼實現(xian):動態注冊廣播實現(xian)

在一個Activity中發送(song)廣播

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);

}

//發送廣(guang)播

public void send(View view){

//發送廣播

Intent intent = new Intent();

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

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

}

___________________________________________________________

在另一(yi)個Activity中動態注(zhu)冊廣播并監聽(ting)

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);

//動態注(zhu)冊(ce)廣播

MyReceive myReceive = new MyReceive();

IntentFilter filter = new IntentFilter();

filter.addAction("back");

registerReceiver(myReceive,filter);

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

在動態注(zhu)冊廣播監聽(ting)的Activity中寫類(lei)實現BroadCastReceive,并重寫onReceive方法(fa)

package demo.baidumapsdk.mychar1;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.widget.Toast;

//動態注(zhu)冊廣播(bo)監聽

public class MyReceive extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

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

//TODO

//在這里(li)就可(ke)以操作一(yi)些事情(qing),比如(ru)退出Activity

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

}

}

___________________________________________________________

代碼實(shi)現(xian)方式二:把(ba)所(suo)有的activty放入同(tong)一個List中(zhong),從List中(zhong)

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

public class MainActivity extends AppCompatActivity{

@Override

 protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//把(ba)當前Activity裝進list,類名.對(dui)象

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被執(zhi)行");

}

}

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

public class TwoActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//將(jiang)當前的(de)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方法

//在遍歷值前(qian)應該判(pan)斷(duan):如果(guo)你遍歷的是一(yi)個(ge)空的Activity對象(xiang),

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

if (Util_List.list!=null){

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

分:是存放對象的容器(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

在這個(ge)地方:我們(men)要(yao)注意啟動模(mo)式設(she)置為SingleTask必須是(shi)入口組件(jian)

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

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

__________________________________________________________________

代碼:

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基礎—基本物體和基本組件介紹

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

回到頂部