您的位置:首页 > 移动开发 > Android开发

android 实现完全退出应用程序的代码

2013-08-29 21:33 696 查看
退出方法:
1) 使用singleTask加载模式
2) 定义一个基类,做公共的功能
定义一个Application
退出形式:
1) 菜单->退出
2) 按back键,提示再按一次退出
3) 按back,弹出退出提示对话框
4) 按back直接退出

以下是第一种方法,通过在清单中配置activity的加载模式singleTask
使用singletask 栈中单实例 例子:a启动b,b启动c,在c的menu菜单中点击退出项,关闭所有activity。

@Override
protected void onNewIntent(Intent intent)
{
//加载了singletask后,返回来的时候直接进入onNewIntent()方法,不会再进入onCreate();
super.onNewIntent(intent);
finish();
Process.killProcess(Process.myPid());//所有activity关闭后,结束进程
}
第二种方法
在application里面创建一个全局容器arraylist<activity>,写两个方法,在容器里加addActivity()和finishActivity();

public class Myapplication extends Application
{
public static ArrayList<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity)
{
activities.add(activity);
}
public static void finishActivity()
{
for (int i = 0; i < activities.size(); i++)
{
activities.get(i).finish();
}
Process.killProcess(Process.myPid());//所有activity关闭后,结束进程
}
}


创建一个基类BaseActivity,写方法getApplication(),(作用是减少代码重复)让每一个activity都继承它。

public class BaseActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
Myapplication app = (Myapplication) getApplication();
app.addActivity(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.base, menu);
return true;
}
}
退出形式的代码如下:

1、
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
Myapplication app = (Myapplication) getApplication();
app.finishActivity();//第一种形式:点击菜单退出项,关闭所有    activity,结束进程
return super.onOptionsItemSelected(item);
}
2、

int pressbacktimes = 0;
private Button button;
@Override
public void onBackPressed()
{
pressbacktimes ++;
if(pressbacktimes == 1)
{
Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
button.postDelayed(new Runnable()
{
//第二种形式:两次点击返回键,第一次弹出toast,提示再按一次退出。间隔超过5秒,就失效
@Override
public void run()
{
pressbacktimes = 0;
}
}, 5000);
}
else if(pressbacktimes == 2)
{
Myapplication app = (Myapplication) getApplication();
app.finishActivity();//点击菜单退出项,关闭所有activity,结束进程
}
}
3、

@Override
public void onBackPressed()
{
//第三种形式:MainActivity里面点击返回键,弹出对话框,是否退出
new AlertDialog.Builder(this).setTitle("title").setMessage("是否退出").setNegativeButton("取消", null).setPositiveButton("确定", new     DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Myapplication app = (Myapplication) getApplication();
app.finishActivity();
}
}).create().show();
}


本文出自 “wangcuijing” 博客,请务必保留此出处http://wangcuijing.blog.51cto.com/7233352/1285487
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: