`
haifengyulu
  • 浏览: 15445 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

(定时关机)一次性关闭多个Activity以退出应用

阅读更多

最近开发安卓应用时,要提供一个定时关机的功能,结果使用

finish()

或者android.os.Process.killProcess(android.os.Process.myPid())

都不行,都只能关闭调用的那个activity,而我如果打开了多个activity,则无法完全退出应用。

网上找了一些资料说System.exit(0)方法同以上的两个方法一样,也达不到效果。


相关资料:

http://maxuefeng.blog.51cto.com/1876326/528561

http://www.360doc.com/content/11/0610/17/128678_126052257.shtml


这些资料中另外都介绍了一种方法:

 

ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
manager.restartPackage(getPackageName());
 

并声明权限:

 

<uses-permission android:name="android.permission.RESTART_PACKAGES"/> 
 

这种方法确实可以达到完全退出程序的目的,但是退得太彻底了,要慎重使用。

因为该方法会终止一切和这个程序包关联的,所有共享同一uid的process被kill,所有的activity会被removed所有创建的服务会停止,还会发一个广播 Intent.ACTION_PACKAGE_RESTARTED 导致所有注册alarms被stopped,

notifications被removed。

如果你的程序使用了Alarm,则不能使用该方法。此外,该方法只能使用在1.5-2.2(不含)版本的系统中,2.2之后的需使用ActivityManager的am.killBackgroundProcesses()方法来达到目的。


由于以上方法均不能满足我的目的,因此我自己另外想了一种解决方法:


1、声明一个Activity基类,让所有Activity继承该基类;

2、在该基类中定义一个BroadcaseReceiver,在onReceiv()方法中调用Activity的finish()方法结束Activity;

3、在该基类的onCreate()方法中注册该BroadcaseReceiver,并在onDestroy()方法中取消注册;

4、在需要退出程序的地方发送一个由以上BroadcaseReceiver处理的广播。


这样,当BroadcaseReceiver接受到该广播后,finish()方法便会把所有的Activity结束掉,从而达到退出应用的目的;与此同时,并不会影响注册的Alarms等功能。

 

分享到:
评论

相关推荐

    Android应用开发多个activity完全退出程序方法

    通常,一个Android应用由多个Activity组成,每个Activity代表一个独立的屏幕或功能。当用户在应用中进行多层级的操作时,会依次打开多个Activity。在用户想要退出应用时,简单地结束当前Activity并不足以完全关闭...

    Android代码-从注册流程分析如何安全退出多个Activity多种方式.rar

    2. **多Activity退出**:在一个应用中有多个Activity时,如果希望一次性关闭所有Activity,可以采用以下策略: - 使用静态变量记录Activity栈:在每个Activity的`onCreate()`方法中添加栈顶Activity的数量,并在`...

    Android 多个activity完全退出实例代码

    1、新建一个 ExitApplication 类继承Application 2、在你要退出的activity Oncreate方法中加入ExitApplication.getInstance().addActivity(this);作用是添加到你的activity历史中。 3、在你当前要完全退出程序的...

    Android一次性退出多个Activity的方法

    在Android开发中,Activity是应用程序的基本组件,负责...通常,Android鼓励用户通过按两次Back键来退出应用,而不是提供一个单独的退出按钮。但根据应用的具体需求,这种一次性退出的机制在某些情况下可能是必要的。

    Android 一次启动多个Activity (TaskStackBuilder)

    用户可以通过按设备上的返回键从栈顶Activity回退到栈中的前一个Activity,直到任务被清空或者用户手动关闭应用。 TaskStackBuilder是Android提供的一种工具类,用于帮助构建一个符合用户期望的回退栈。当用户点击...

    Android代码一键退出客户端 多个Activity

    Android代码一键退出客户端 多个Activity推出的时候用到的 原理是把所有打开的activity都放在一个list里面 当点击退出的时候便利list 然后一个一个的结束掉。方法简单易懂,一看就会

    一键退出多个Activity

    此工程为一键退出多个Activity简单示例,所有的Activity同时集成一个ParentActivity,在ParentActivity添加一个菜单触发事件来控制关闭activity,每打开一个Activity就记录下来并添加到一个list中,关闭的时候同时...

    Android按两次返回退出应用的代码

    在Android开发中,为了让用户能够明确地退出应用,通常会实现一个功能,即连续点击两次返回按钮后退出应用程序。这个功能可以防止用户意外地退出应用,同时也提供了良好的用户体验。下面我们将详细探讨如何在Android...

    分析如何安全退出多个Activity 多种方式

    可以创建一个全局广播接收器,监听特定的事件(如系统广播或自定义广播),在接收到特定广播时,遍历并finish掉所有的Activity,实现应用退出。但这种方法需谨慎使用,因为全局广播接收器可能会消耗额外的资源。 六...

    android多个activity和一个service通信

    在实际项目中,常常需要多个Activity与一个Service进行通信,比如本例中提到的“service在后台下载”场景。这种通信机制对于实现应用的流畅性和功能完整性至关重要。 首先,我们来看如何创建和启动一个Service。...

    退出程序提示,退出程序后关闭所有activity

    在Android应用开发中,"退出程序提示,退出程序后关闭所有Activity"是一个常见的需求,它涉及到用户交互和应用生命周期管理。Activity是Android系统中的一个核心组件,代表了用户与应用进行交互的界面。当用户完成某...

    Android 完全退出程序,关闭所有Activity

    1. 创建一个全局静态变量的Activity栈:在应用的基类或工具类中定义一个ArrayList来存储所有的Activity实例。每当一个新的Activity被创建时,将其添加到栈中。 ```java public class AppManager { private static ...

    安全退出activity方法(多种)

    当需要退出时,一次性清理所有Activity。这种方法适用于需要统一管理多个Activity的复杂应用场景。 ```java public class ActivityManager { private static List&lt;Activity&gt; activities = new ArrayList(); ...

    关闭多个Activity

    Android应用如何关闭多个Activity,里面有多种方法找出适合自己的方法,欢迎浏览:http://blog.csdn.net/weiwozhiyi/article/details/50791416

    Android中实现再按一次返回键退出应用程序

    Toast.makeText(this, "再按一次退出应用", Toast.LENGTH_SHORT).show(); firstBackPressedTime = System.currentTimeMillis(); } else { // 2秒内再次按下返回键,退出应用 finish(); } return true; } ...

    Activity启动和退出动画

    例如,我们可以创建两个XML动画资源文件,一个用于进入动画(right_in.xml),另一个用于退出动画(right_out.xml)。这两个文件应放在res/anim目录下。以下是一个简单的示例: right_in.xml: ```xml android:...

    Service与多个Activity交互

    当一个Service需要与多个Activity进行数据交换或控制交互时,Broadcast(广播)就起到了关键的作用。 **Broadcast(广播):** BroadcastReceiver是Android系统中的一个重要组件,它用于接收系统或应用发送的广播...

    viewpager中嵌套多个activity

    在“viewpager中嵌套多个activity”的场景下,开发者可能会遇到一些挑战,比如如何有效地管理多个Activity之间的数据加载和通信。在这个主题中,我们将深入探讨如何在ViewPager中实现对多个Activity的嵌套,并进行...

    android安卓app制作个定时关机的APP.zip_android客户端是什么

    在Android平台上,开发一个定时关机的APP涉及到多个关键技术和组件。下面,我们将详细探讨这些技术点。 首先,状态栏通知(Notification)是Android应用与用户进行非侵入式交互的重要方式。`lj API LEVEL 16生成...

Global site tag (gtag.js) - Google Analytics