Android中使用广播机制退出多个Activity
程序员文章站
2022-05-16 13:33:51
...
谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多。
在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法。完成之时,无意在网上看到的可以使用广播机制退出Activity。看了一部分人的博客、文章等教程,发现也是摘抄的“很随便”,说的不详细,或不能实现。
看了他们的意思,写了demo,大家看看吧。主要代码如下:(不方便看的直接下整个工程)
为了代码的简洁性,抽取出一个基类BaseActivity(自定义的,当然,你也可以不写这个基类,只要在你项目的每个Activity里实现其中的代码即可),让你代码中要关闭的Activity都继承这个BaseActivity。
public class BaseActivity extends Activity { protected 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("ExitApp"); this.registerReceiver(this.broadcastReceiver, filter); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); this.unregisterReceiver(this.broadcastReceiver); } }
在你要关闭的Activity里添加myExit()方法,然后在要进行退出程序操作的地方调用myExit()方法就行。
ublic class Activity1 extends BaseActivity { private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.a1); btn1 = (Button)findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(Activity1.this, Activity2.class); startActivity(i); } }); } /** * 捕获手机物理菜单键 */ private long exitTime = 0; @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 { myExit(); } return true; } return super.onKeyDown(keyCode, event); } protected void myExit() { Intent intent = new Intent(); intent.setAction("ExitApp"); this.sendBroadcast(intent); super.finish(); } }
整个项目工程:
上一篇: OCZ针对入门市场推出低于100美元的Onyx SSD
下一篇: 【转载】如何预测用户query意图