首先,我们将管理Activity的功能通过一个扩展的Application类来实现。
public class MyApplication extends Application {
private static Stack<Activity> activityStack;
private static MyApplication singleton;
@Override
public void onCreate()
{
super.onCreate();
singleton=this;
}
// Returns the application instance
public static MyApplication getInstance() {
return singleton;
}
/**
* add Activity 添加Activity到栈
*/
public void addActivity(Activity activity){
if(activityStack ==null){
activityStack =new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* get current Activity 获取当前Activity(栈中最后一个压入的)
*/
public Activity currentActivity() {
Activity activity = activityStack.lastElement();
return activity;
}
/**
* 结束当前Activity(栈中最后一个压入的)
*/
public void finishActivity() {
Activity activity = activityStack.lastElement();
finishActivity(activity);
}
/**
* 结束指定的Activity
*/
public void finishActivity(Activity activity) {
if (activity != null) {
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 结束指定类名的Activity
*/
public void finishActivity(Class<?> cls) {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void finishAllActivity() {
for (int i = 0, size = activityStack.size(); i < size; i++) {
if (null != activityStack.get(i)) {
activityStack.get(i).finish();
}
}
activityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit() {
try {
finishAllActivity();
} catch (Exception e) {
}
}
}
注意,为了在我们自己的应用程序中使用这个自定义的Application类,而不是默认的Application类。需要在Manifest文件中修改一下<Application>的属性( android:name)
例如:
1 <application
2 android:icon="@drawable/icon"
3 android:label="@string/app_name"
4 android:name="your_package_name_here.MyApplication">
使用方法:
方法1: 之后我们在所有的activity的oncreate方法中通过getinstance得到一个MyApplication的实例,然后调用addActivity方法把当前的activity加入到stack中,如果要退出应用程序只需要调用AppExit方法即可。
方法2: 自定义一个继承Activity类的BaseActivity
1 public class BaseActivity extends Activity{
2 @Override
3 protected void onCreate(Bundle savedInstanceState){
4 super.onCreate(savedInstanceState);
5 //添加Activity到堆栈
6 MyApplication.getInstance().addActivity(this);
7 }
8
9 @Override
10 protected void onDestroy(){
11 super.onDestroy();
12 //结束Activity&从栈中移除该Activity
13 MyApplication.getInstance().finishActivity(this);
14 }
15
16 }
分享到:
相关推荐
在本例中,对话框可能包含“确定”和“取消”两个按钮,以及关于退出账号的警告信息。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/dialog_...
在Android开发中,退出应用程序的功能通常涉及到关闭所有与之相关的活动(Activities)并清理资源。在Android系统中,一个应用程序实际上是由多个Activity组成的,每个Activity代表一个用户界面。当用户在应用之间...
本项目"广播通知退出账号登陆"着重探讨如何利用广播机制来实现在用户异地登录时,自动使本地账号退出登录的功能。 广播通知的主要作用在于全局性的信息传递。在这个特定的场景下,当检测到一个特定的事件,如用户在...
android中实现按两次返回键退出Activity,不再是返回一次就退出应用,第一次点击提示“再按一次退出应用”
- APP完全退出,下次重新打开APP使用,如果登录账号有缓存登录有效状态并且未过期,则跳过用户账号登录页面进入手势解锁页面,如果登录状态失效则需要重新输入账号密码登录。 - 用户连续解锁5次失败则进入账号密码...
### Android应用测试总结 在进行Android应用测试的过程中,我们需要关注多个方面来确保应用程序的质量和用户体验。下面将结合标题、描述及部分具体内容展开讨论。 #### 应用程序功能验证 首先,确保应用程序的...
【WordPress的Android应用】 WordPress是全球最受欢迎的内容管理系统(CMS)之一,它主要用于构建网站和博客。随着移动设备的普及,WordPress也推出了适用于Android平台的应用,让用户能够在手机或平板电脑上方便地...
总的来说,Android应用退出登录的实现方法是一个典型的跨组件通信问题,利用广播机制可以很好地解决这个问题。同时,开发者需要注意在处理广播时要遵循最佳实践,如及时注册和注销接收器,以及确保广播接收器只处理...
下面我们将详细探讨如何在Android应用中集成高德地图的内置导航。 首先,集成高德地图SDK是基础步骤。在Android Studio中,你需要通过Maven仓库或者JCenter将高德地图的SDK添加到项目的build.gradle文件中。确保在...
360 Android 应用接入文档是由北京奇虎科技有限公司发布的官方文档,旨在帮助开发者了解如何将360 SDK集成到Android应用程序中,以实现登录授权、支付等功能。此文档详细介绍了各个版本的迭代历史以及每个版本的主要...
综上所述,安卓手机QQ 4.1版本的退出问题反映了应用程序更新与用户体验之间的平衡挑战。随着技术的发展,应用设计需不断适应用户需求,同时也要考虑整体的产品策略和市场定位。在这一过程中,用户反馈的作用至关重要...
基于Android的仿QQ应用 项目简介 本项目是一个基于Android平台的仿QQ应用,旨在模拟QQ的基本功能和界面。...通过本项目,用户可以体验到类似... 处理返回键事件,弹出提示对话框询问用户是否退出应用。 4. 联系人管理
在Android应用测试中,尤其是针对涉及WiFi功能的应用,测试过程需要涵盖多个方面,确保应用程序的稳定性和用户体验。以下是对Android WiFi应用测试的一些关键点的详细分析: **一、登录功能测试** 1. **WiFi影响**...
在Android应用开发中,数据同步是至关重要的一个环节,尤其是在用户需要实时获取服务器上的更新或者需要在多个设备之间保持数据一致性的场景下。Android SampleSyncAdapter是一个官方提供的示例,用于演示如何实现...
在Android应用测试中,尤其是针对涉及WiFi功能的应用,测试过程需要涵盖多个方面以确保软件的稳定性和用户体验。以下是对Android_wifi应用测试总结的关键点详细解释: 1. **应用程序功能测试**: - 验证所有预设...
这个实例源码主要展示了如何在Android应用中实现这一特性。下面我们将深入探讨相关的知识点。 1. **SharedPreferences**: 这是Android系统提供的轻量级数据存储方式,常用于存储用户配置或者简单的数据记录。在...
以上是关于Android应用集成QQ第三方登录的基本知识点和流程,实际开发中,开发者需要根据具体需求调整代码,例如处理登录后的数据存储、用户状态维护以及错误日志记录等。通过不断实践和调试,可以熟练掌握QQ登录的...
在Android应用开发中,数据存储是一项重要的任务,用于保存用户数据、应用状态或者配置信息等。其中,`SharedPreference` 是一种轻量级的数据存储方式,特别适合用来存储一些简单的键值对数据,如登录状态、用户偏好...
这个压缩包"Android应用源码之第三方登录(新浪,腾讯。人人网).rar"包含了一个示例项目,展示了如何集成新浪、腾讯和人人网这三家社交媒体平台的SDK,实现用户通过这些平台账号进行登录的功能。本文将详细讲解这一...
安卓美食外卖系统应用SQLite数据库、RecycleView列表、SharedPreferences存储、Adapter、Fragment等技术完成,对数据库的CRUD使用的淋漓尽致。启动应用,进入欢迎页面,选择新用户注册,注册成功后自动跳转至登录...