【Android】APP一键退出

xiaoxiao2021-02-28  45

只是备份一下知识,下次方便找

收集活动的类

public class ActivityCollector { public static List<Activity> activities=new ArrayList<Activity>(); public static void addActivity(Activity activity){ activities.add(activity); } public static void removeActivity(Activity activity){ activities.remove(activity); } //测试finishAll()方法在ThirdActivity中 public static void finishAll(){ for (Activity activity:activities) { if(!activity.isFinishing()){ activity.finish(); } } System.exit(0); } }

关键点:List的增删,isFinishing方法,还有static类型函数

在每个活动创建时添加到集合里,销毁时从集合删除活动

Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityCollector.addActivity(this); setContentView(R.layout.activity_main); } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); } }

在首页,按一下返回键会提示“再按一下退出”,2s内再按一下则销毁所有活动退出APP。

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { ActivityCollector.finishAll(); System.exit(0); } return true; } return super.onKeyDown(keyCode, event); }

关键点:onKeyDown方法,keyCode值判断,使用currentTimeMillis实现代码控制

总结:使用一个List集合收集所有的APP,然后在每个活动的创建和销毁中添加和删除元素,退出时使用轮询全部结束。双击退出的逻辑使用currentTimeMillis控制,第一次点击时必然出现吐司提示,并存入时间,第二次点击时判断时和第一次的时间差,非常精彩的代码结构。

转载请注明原文地址: https://www.6miu.com/read-79224.html

最新回复(0)