アプリケーションをブロードキャストで閉じる(Activityごと)と、2回連続して戻るキーをクリックして閉じる
1つのアプリケーションには多くのActivityがあるかもしれませんが、誰もが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);
}
ここまでで終わりです!とても簡単でしょう.