Android中使用广播机制退出多个Activity
2014-11-01 14:04
316 查看
谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多。
在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法。完成之时,无意在网 上看到的可以使用广播机制退出Activity。看了一部分人的博客、文章等教程,发现也是摘抄的“很随便”,说的不详细,或不能实现。
看了他们的意思,写了demo,大家看看吧。主要代码如下:(不方便看的直接下整个工程)
为了代码的简洁性,抽取出一个基类BaseActivity(自定义的,当然,你也可以不写这个基类,只要在你项目的每个Activity里实现其中的代码即可),让你代码中要关闭的Activity都继承这个BaseActivity。
Java代码
![](http://ldl8818.iteye.com/images/icon_star.png)
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()方法就行。
Java代码
![](http://ldl8818.iteye.com/images/icon_star.png)
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();
}
}
整个项目工程:
在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法。完成之时,无意在网 上看到的可以使用广播机制退出Activity。看了一部分人的博客、文章等教程,发现也是摘抄的“很随便”,说的不详细,或不能实现。
看了他们的意思,写了demo,大家看看吧。主要代码如下:(不方便看的直接下整个工程)
为了代码的简洁性,抽取出一个基类BaseActivity(自定义的,当然,你也可以不写这个基类,只要在你项目的每个Activity里实现其中的代码即可),让你代码中要关闭的Activity都继承这个BaseActivity。
Java代码
![](http://ldl8818.iteye.com/images/icon_star.png)
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()方法就行。
Java代码
![](http://ldl8818.iteye.com/images/icon_star.png)
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();
}
}
整个项目工程:
相关文章推荐
- Android中使用广播机制退出多个Activity
- Android中使用广播机制退出多个Activity
- Android中使用广播机制退出多个Activity
- Android中使用广播机制 退出多个Activity
- Android中使用广播机制退出多个Activity
- Android2.2使用广播机制完全退出程序
- android2.2使用广播机制进行完全退出
- android2.2完全退出程序, 使用广播机制
- android完全退出程序, 使用广播机制。与众不同,仔细看
- 使用广播退出多个activity
- Android 2.2完全退出程序, 使用广播机制
- android-关于广播机制的使用
- Android学习札记40:关于安全退出已创建多个Activity的应用(3)
- Android 使用多个Intent 进行activity跳转 而没有finish的情况,如何直接退出系统
- Android完全退出多个activity程序
- android 使用多个Intent 进行activity跳转 而没有finish的情况,如何直接退出系统
- Android退出多个activity和单个activity的方法
- 广播的妙用-android程序完全退出,销毁所有activity方法
- 【工具类】Android退出多个Activity
- android之如何在两个activity之间传递handler_利用broadcast广播机制