实现:
1.打印执行中的当前活动
2.实现随时随地的再按一次退出程序
BaseActivity.java
package com.example.activitydemo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
ActivityCollector.removeActivity(this);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
this.exitApp();
}
return true;
}
return super.dispatchKeyEvent(event);
}
private long exitTime = 0;
/**
* 退出程序
*/
private void exitApp() {
// 判断2次点击事件时间
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
ActivityCollector.finishAll();
}
}
}
ActivityCollector.java
package com.example.activitydemo;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
public class ActivityCollector {
public static List<Activity> activitys = new ArrayList<Activity>();
/**
* 添加活动
* @param activity
*/
public static void addActivity(Activity activity)
{
activitys.add(activity);
}
/**
* 移除活动
* @param activity
*/
public static void removeActivity(Activity activity)
{
activitys.remove(activity);
}
/**
* 销毁活动
*/
public static void finishAll()
{
for(Activity act:activitys)
{
if(!act.isFinishing())
{
act.finish();
}
}
}
}
再需要实现上述功能的Activity中继承BaseActivity即可