本文实例讲述了Android一次性退出多个Activity的方法。分享给大家供大家参考,具体如下:
因为android的API中没有提供一次性退出的接口所以想要在多activity的程序里面一次性退出的话就要费点功夫了。我是在一个单例对象里面记录activity栈中activity的引用然后在需要退出时遍历一遍finish()掉就可以了。实现步骤如下:
1、创建一个单例对象
package com.exit;
import java.lang.ref.SoftReference;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
public class ActivityManager
{
private Context context;
private static ActivityManager activityManager;
public static ActivityManager getActivityManager(Context context)
{
if(activityManager == null)
{
activityManager = new ActivityManager(context);
}
return activityManager;
}
private ActivityManager(Context context)
{
this.context = context;
}
private final HashMap<String, SoftReference<Activity>> taskMap = new HashMap<String, SoftReference<Activity>>();
public final void putActivity(Activity atv)
{
taskMap.put(atv.toString(), new SoftReference<Activity>(atv));
}
public final void removeActivity(Activity atv) {
taskMap.remove(atv.toString());
}
public final void exit()
{
for (Iterator<Entry<String, SoftReference<Activity>>> iterator = taskMap.entrySet().iterator(); iterator.hasNext();) {
SoftReference<Activity> activityReference = iterator.next().getValue();
Activity activity = activityReference.get();
if (activity != null)
{
activity.finish();
}
}
taskMap.clear();
}
}
2、创建自己的根activity,重写onCreate与onDestory
package com.exit;
import android.app.Activity;
import android.os.Bundle;
public class BaseActivity extends Activity {
private ActivityManager manager = ActivityManager.getActivityManager(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
manager.putActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
manager.removeActivity(this);
}
public void exit(){
manager.exit();
}
}
3、以后创建的activity都继承这个根activity就可以了,如下
package com.exit.activitys;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import com.exit.BaseActivity;
import com.exit.R;
public class ExitActivity extends BaseActivity implements OnClickListener{
private Button start;
private Button exit;
private TextView tipTV;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button)findViewById(R.id.start_new_activity);
exit = (Button)findViewById(R.id.exit_all_activity);
tipTV = (TextView)findViewById(R.id.tip_tv);
tipTV.setText("activity:"+this.toString());
start.setOnClickListener(this);
exit.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v == start){
Intent intent = new Intent(this , ExitActivity.class);
startActivity(intent);
}else if(v == exit){
exit();
}
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
您可能感兴趣的文章:Android使用Theme自定义Activity进入退出动画的方法Android仿微信滑动退出ActivityAndroid 中 退出多个activity的经典方法退出Android程序时清除所有activity的实现方法android中实现完全退出程序方法(退出所有activity)Android Activity进出动画三种方法Android Activity切换动画详解及实例Android Activity跳转动画效果Android实现Activity界面切换添加动画特效的方法Android的Activity跳转动画各种效果整理Android编程设定activity进入和退出效果的方法