アプリケーションをブロードキャストで閉じる(Activityごと)と、2回連続して戻るキーをクリックして閉じる


1つのアプリケーションには多くのActivityがあるかもしれませんが、誰もがActivityを閉じたくないかもしれませんし、忘れてしまうかもしれません.では、どのようにしてすべての非閉じたActivityを閉じるのか、実は多くの方法がありますが、私が一番好きなのは放送イベントを通じて閉じることです.このように簡単で分かりやすく、操作しやすく、速いです.
まず、すべてのactivityに親を継承させる親を作成します.これにより、毎回ブロードキャストを登録する必要はありません.親に登録すればいいです.コードは次のとおりです.
package net.loonggg.test;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

public class BaseActivity extends Activity {
	/**
	 *  Activity , , Activity Activity 
	 */
	protected BroadcastReceiver finishAppReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
			finish();
		}
	};

	@Override
	public void onResume() {
		super.onResume();
		//  activity 
		IntentFilter filter = new IntentFilter();
		filter.addAction("net.loonggg.exitapp");
		this.registerReceiver(this.finishAppReceiver, filter);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		this.unregisterReceiver(this.finishAppReceiver);
	}
}
次はサブクラス継承です.コードは次のとおりです.
package net.loonggg.test;

import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends BaseActivity {
	private Button btn;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn = (Button) findViewById(R.id.btn);

		btn.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(getApplicationContext(),
						SecondActivity.class);
				startActivity(intent);
			}
		});
	}

	private long exitTime = 0;

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (KeyEvent.KEYCODE_BACK == keyCode) {
			//  , , 
			if (System.currentTimeMillis() - exitTime > 2000) {
				Toast.makeText(getApplicationContext(), " ",
						Toast.LENGTH_SHORT).show();
				//  exitTime
				exitTime = System.currentTimeMillis();
			} else {
				exitApp();
			}
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

	/**
	 *  , 
	 */
	private void exitApp() {
		Intent intent = new Intent();
		intent.setAction("net.loonggg.exitapp");
		this.sendBroadcast(intent);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		System.out.println("-------MainActivity-------->onDestroy()");
	}

}
実は言うまでもなく、私はみんなのコードがきっとすべて理解したと信じて、主に構想で、コードはすべてとても簡単な基礎です.次に、2回連続して戻るキーをクリックしてアプリケーションを終了する方法を紹介します.方法は以下の通りです.
/**
	 *  
	 */
	private long exitTime = 0;

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (KeyEvent.KEYCODE_BACK == keyCode) {
			//  , , 
			if (System.currentTimeMillis() - exitTime > 2000) {
				Toast.makeText(getApplicationContext(), " ",
						Toast.LENGTH_SHORT).show();
				//  exitTime
				exitTime = System.currentTimeMillis();
			} else {
				exitApp();
			}
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
ここまでで終わりです!とても簡単でしょう.