首页 > 其他分享 >android 使用多个Intent 进行activity跳转 而没有finish的情况,如何直接退出系统

android 使用多个Intent 进行activity跳转 而没有finish的情况,如何直接退出系统

时间:2023-05-21 23:06:41浏览次数:66  
标签:finish Activity activityStack Intent activity 跳转 public


<:section>

<!--列表视图页显示缩略图和文章摘要--><!--文章视图页显示全部内容--><!--如果有内容,显示内容-->


就是 N 个 Activity 跳转 没finish(); 最后一个 Activity单击事件 如何推出整个 程序?

很简单:只要在最后一个需要finish掉之前所有的avtivity 的Intent 上加上这样一句话                                                                       

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//注意本行的FLAG设置

参考:http://www.open-open.com/home/space-37924-do-blog-id-5805.html

 

Android-完全退出当前应用程序的四种方法

 

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法。

 

 

1. Dalvik VM的本地方法

 android.os.Process.killProcess(android.os.Process.myPid())    //获取PID
 System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出

 

2. 任务管理器方法

  首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限

 ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
 am.restartPackage(getPackageName());
 系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上
 <uses-permission android:name=\"android.permission.RESTART_PACKAGES\"></uses-permission>

3. 根据Activity的声明周期

 

3.  我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标 志     Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。

在A窗口中使用下面的代码调用B窗口

Intent intent = new Intent(); 
intent.setClass(Android123.this, CWJ.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG设置 
startActivity(intent);

接下来在B窗口中需要退出时直接使用finish方法即可全部退出。

 

4.自定义一个Actiivty 栈,道理同上,不过利用一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法。代码如下:


01   public class ScreenManager {
 
 
02 private static Stack<Activity> activityStack;
 
 
03 private static ScreenManager instance;
 
 
04 private  ScreenManager(){
 
 
05 }
 
 
06 public static ScreenManager getScreenManager(){
 
 
07  if(instance==null){
 
 
08   instance=new ScreenManager();
 
 
09  }
 
 
10  return instance;
 
 
11 }
 
 
12//退出栈顶Activity
 
 
13 public void popActivity(Activity activity){
 
 
14  if(activity!=null){
 
 
15   activity.finish();
 
 
16   activityStack.remove(activity);
 
 
17   activity=null;
 
 
18  }
 
 
19 }
 
 
20
 
 
21//获得当前栈顶Activity
 
 
22 public Activity currentActivity(){
 
 
23  Activity activity=activityStack.lastElement();
 
 
24  return activity;
 
 
25 }
 
 
26
 
 
27//将当前Activity推入栈中
 
 
28 public void pushActivity(Activity activity){
 
 
29  if(activityStack==null){
 
 
30   activityStack=new Stack<Activity>();
 
 
31  }
 
 
32  activityStack.add(activity);
 
 
33 }
 
 
34 //退出栈中所有Activity
 
 
35 public void popAllActivityExceptOne(Class cls){
 
 
36  while(true){
 
 
37   Activity activity=currentActivity();
 
 
38   if(activity==null){
 
 
39    break;
 
 
40   }
 
 
41   if(activity.getClass().equals(cls) ){
 
 
42    break;
 
 
43   }
 
 
44   popActivity(activity);
 
 
45  }
 
 
46 }
 
 
47}

 

 

 

 


标签:finish,Activity,activityStack,Intent,activity,跳转,public
From: https://blog.51cto.com/u_16112859/6320513

相关文章

  • odoo 模块传递数据及跳转
    defgoto_mystock(self):self.ensure_one()view_id=self.env.ref('mystock.mystock_form_view').id#a=self.env['mystock'].create({'billno':'ABCDE',#......
  • 微前端中路由的跳转
    微前端中路由的跳转针对基座与子应用都是Angular的场景,实现应用间的路由跳转基座往子应用的跳转首先在路由中要定义一个空组件来承接子路由,可以在基座路由表中添加如下路由{path:'subapp',children:[{path:'**',component:EmptyComponent}]}@C......
  • Pytext上手——Intent-Slot 模型实战
    1意图分类任务简介对话系统里,首先要对用户的输入进行领域、意图识别和槽抽取。深度学习发展以后,意图识别的方法多使用深度学习的算法,使用CNN对意图进行多分类,领域分类和意图分类较为类似。而槽的预测可以看成是标签序列预测问题。例如句子“我想听周杰伦的菊花台”,标签可以定义为......
  • dw代码跳转
    <html><style type="text/css">img{width: 200px;height: 200px;}</style><script language="JavaScript" type="text/javascript">function fn(n){var nextn;if(n==3){nextn=1;}else{nextn=n+1;}document......
  • Android Studio学习日志一,直接跳转和密码正确跳转
    记录一下我跟着手把手教你用AndroidStudio写一个APP_UP主Superior-Leo进行app开发小项目UP主的笔记首先,在资源文件创建一个文件夹,用来放APP背景图片,按钮图片一、直接跳转第一步、声明控件第二步,找到控件第三步骤,实现跳转代码packagecom.example.appdemo;importa......
  • Grafana系列-统一展示-11-Logs Traces无缝跳转
    系列文章Grafana系列文章概述如前文Grafana系列-统一展示-1-开篇所述,Grafana可以了解所有相关的数据--以及它们之间的关系--对于尽快根治事件和确定意外系统行为的真正来源非常重要。Grafana允许团队在一个地方对所有的数据进行无缝的可视化和跳转。最典型的就是......
  • vue v-href跳转外部链接功能实现
    exportdefault{ href:{  bind(el,binding,vnode){   el.style.cursor='pointer'   if(!(binding.value||'').trim())return   consturl=binding.value   el.addEventListener('click',()=>{    ......
  • vim 查找、跳转命令
    ————————————————版权声明:本文为CSDN博主「Kashine」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_41709234/article/details/123818619 vi、vim命字符查找命令注意:以下操作由【指令模式】下进入【......
  • pyqt实现界面跳转
    if__name__=='__main__': app=QApplication(sys.argv) MainWindow=QMainWindow() ui=Ui_Form() ui.setupUi(MainWindow) MainWindow.show()  stu_main=QMainWindow() stu_ui1=stu_ui() stu_ui1.setupUi(stu_main)  ui.pushButton_4.cl......
  • uniapp中小程序如何跳转其他小程序
    1.首先在manifest中的源码试图中配置 2.跳转代码,在需要跳转的页面写入 ......