android應用程序如何退出?探究程序退出的方法

     我們學習android的Activity是就已經知道,隨着一個新的Activity被創建,舊的Activity會被壓入棧裏。當我們的應用程序裏有很多的Activity時,隨着用戶的使用,在內存充足的情況下,會有一個又一個Activity被壓入棧,當我們用完了,暫時不用這個應用時,我們往往會按返回鍵。。那麼,往往打開過多少Activity,就需要按多少次返回鍵。這是非常痛苦的。結合自身經驗,和我查詢的一些資料,我找到了幾種退出應用的解決辦法。

一,寫一個廣播。。

        我們在每個Activity中,可以寫一個BroadcastReceiver ,然後在退出的時候發出去一個廣播,Activity在接到廣播的時候,調用自身的finish()方法。比如,我們寫一個BaseActivity。

package com.zhw.all_quit;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
 * Created with IntelliJ IDEA.
 * User: Wymon Zhang
 * Date: 13-7-27
 * Time: 下午10:30
 * 建立一個基礎活動,然後可以讓以後所有的Activity都繼承他來實現
 */
public class BaseActivity  extends Activity {
	
    //註冊一個廣播的內部類,當收到關閉事件時,調用finish方法結束當前的Activity
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        //在當前的activity中註冊廣播
        IntentFilter filter = new IntentFilter();
        filter.addAction(GlobalVarable.EXIT_ACTION);
        this.registerReceiver(this.broadcastReceiver, filter);
    }
}
然後在要退出的地方
 public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {

            long secondTime = System.currentTimeMillis();

            if (secondTime - firstTime > 1000) {//如果兩次按鍵時間間隔大於1000毫秒,則不退出
                Toast.makeText(UiMainActivity.this, "再按一次退出程序...", Toast.LENGTH_SHORT).show();
                firstTime = secondTime;//Ui更新firstTime
                return true;
            } else {
                Intent intent = new Intent();
                intent.setAction(GlobalVarable.EXIT_ACTION); // 退出
                this.sendBroadcast(intent);// 發送廣播
                super.finish();
                //退出線程,銷燬靜態變量
                System.exit(0);
            }
        }

        return super.onKeyUp(keyCode, event);
    }
對了,需要定義一個firsttime
感覺這個方法還不錯。。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章