Android退出程序离开与关闭程序的弹出窗口

Android退出程序离开与关闭程序的弹出窗口

  [复制链接]

0

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现。

首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看Android开发网是如何实现的吧.

1. Dalvik VM的本地方法

android.os.Process.killProcess(android.os.Process.myPid())    //获取PID,目前获取自己的也只有该API,否则从/proc中自己的枚举其他进程吧,不过要说明的是,结束其他进程不一定有权限,不然就乱套了。

System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出

2. 任务管理器方法

首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限android.permission.RESTART_PACKAGES,我们直接结束自己的package即可,直接使用ActivityManager类的restartPackage方法即可,参数为package name,该类通过getSystemService(Context.ACTIVITY_SERVICE)来实例化ActivityManager对象,这种方法系统提供的,但需要显示声明权限,所以使用中需要综合考虑。

3. 根据Activity的声明周期

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

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

01.Intent intent = new Intent();   02.intent.setClass(Android123.this, CWJ.class);   03.intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG设置  04.startActivity(intent);  接下来在B窗口中需要退出时直接使用finish方法即可全部退出。

对话窗口上的ICON图标

范例说明

此范例将说明设置离开与关闭程序的对话窗口提示选项。而打开这个对话窗口是由一个按钮来处理,当单击"按我离开"按钮时,会出现 AlertDialog的信息,而AlertDialog的内容设置,先设置是否要显示title的文字(也可以不设置),该范例是会让它显示的,所以使用res/values/ string/app_about这个字符串常数。

下一步则是显示AlertDialog的正文信息,使用的方法是.setMessage,如果不使用的话,就会发现AlertDialog的正文的字段是不显示的,故在这边设置显示内容为提示对话内容,正文的信息则是res/values/string/app_msg。

而本范例最重要的并非是AlertDialog的设计或流程,因为这些在前一章已经看过了,在此要示范的是如何在AlertDialog里显示图片、配置"确定"以及"取消"按钮,并学会如何判断在AlertDialog里单击的按钮事件,即设计在离开程序之前跳出AlertDialog,让 User再一次确认是否关闭应用程序,并在AlertDialog上设计"确定"与"取消"按钮,当单击"确定"按钮才会真的离开程序,单击"取消"按钮则会回到程序中。

运行结果(见图4-27)

范例程序

1. src/irdc.ex04_26/EX04_26.java

主程序设置的AlertDialog有两个Button,或许有人会询问:Button没有在layout/main.xml里创建,为何会出现呢?这是因为在动态生成AlertDialog的同时,也重写了按钮事件;AlertDialog里面的Button语句,与一般在Layout当中先部署Button不一样,"确定"Button跟"取消"Button都会有追加方法的描述。如"确定"Button的描述是 PositiveButton,而"取消"Button的命令为NegativeButton。

在构造AlertDialog内的"确定"Button中的OnClickListener事件后,如果发生Positive  Button事件,则以finish()结束程序,程序就会自行关闭,这个finish()代表的意思,是把整个Activity给关掉,并由 Android.os回收已配置的系统资源。

01./* import程序略 */    02.   03.public class EX04_26 extends Activity     04.{    05.  /*声明 Button对象*/    06.  private Button mButton1;    07.      08.  /** Called when the activity is first created. */    09.  @Override    10.  public void onCreate(Bundle savedInstanceState)     11.  {    12.    super.onCreate(savedInstanceState);    13.    setContentView(R.layout.main);    14.        15.    /*取得 Button对象*/    16.    mButton1 = (Button) findViewById(R.id.myButton1);    17.    mButton1.setOnClickListener(new Button.OnClickListener()    18.    {    19.      @Override    20.      public void onClick(View v)    21.      {    22.        // TODO Auto-generated method stub          23.        new AlertDialog.Builder(EX04_26.this)    24.        /*弹出窗口的最上头文字*/    25.        .setTitle(R.string.app_about)    26.        /*设置弹出窗口的图式*/    27.        .setIcon(R.drawable.hot)     28.        /*设置弹出窗口的信息*/    29.        .setMessage(R.string.app_about_msg)    30.        .setPositiveButton(R.string.str_ok,    31.        new DialogInterface.OnClickListener()    32.        {    33.          public void onClick    34.          (DialogInterface dialoginterface, int i)    35.          {               36.            finish();/*关闭窗口*/    37.          }    38.        }    39.      ).setNegativeButton(R.string.str_no,    40.        new DialogInterface.OnClickListener()    41.        {    42.          /*设置跳出窗口的返回事件*/    43.          public void onClick(DialogInterface dialoginterface, int i)       44.          {    45.          }    46.        }    47.      ).show();    48.    }    49.  });}    50.}

扩展学习

AlertDialog.setIcon()可以置换对话窗口里的图标,在不设置此方法时就只有文字,若使用了setIcon()方法后,就会将图标显示在对话窗口当中。

你可以试着使用setIcon()方法将Drawable ID传入(默认的drawable路径为res/drawable)即可,以下的代码段可将原本的感叹号图标更换为一个心碎的小图标。

01.new AlertDialog.Builder(EX04_26.this)    02./*弹出窗口的最上头文字*/    03..setTitle(R.string.app_about)    04./*设置弹出窗口的图式*/    05..setIcon(R.drawable.hot)    06./*设置弹出窗口的信息*/    07.//.setMessage(R.string.app_about_msg)   运行结果如图4-28所示。

需留意放入的Icon图片不可以太大,最好先缩图之后再导入项目,若能参考手机画面的分辨率来设计更佳。

Android退出程序离开与关闭程序的弹出窗口

  [复制链接]

0

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现。

首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看Android开发网是如何实现的吧.

1. Dalvik VM的本地方法

android.os.Process.killProcess(android.os.Process.myPid())    //获取PID,目前获取自己的也只有该API,否则从/proc中自己的枚举其他进程吧,不过要说明的是,结束其他进程不一定有权限,不然就乱套了。

System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出

2. 任务管理器方法

首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限android.permission.RESTART_PACKAGES,我们直接结束自己的package即可,直接使用ActivityManager类的restartPackage方法即可,参数为package name,该类通过getSystemService(Context.ACTIVITY_SERVICE)来实例化ActivityManager对象,这种方法系统提供的,但需要显示声明权限,所以使用中需要综合考虑。

3. 根据Activity的声明周期

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

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

01.Intent intent = new Intent();   02.intent.setClass(Android123.this, CWJ.class);   03.intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG设置  04.startActivity(intent);  接下来在B窗口中需要退出时直接使用finish方法即可全部退出。

对话窗口上的ICON图标

范例说明

此范例将说明设置离开与关闭程序的对话窗口提示选项。而打开这个对话窗口是由一个按钮来处理,当单击"按我离开"按钮时,会出现 AlertDialog的信息,而AlertDialog的内容设置,先设置是否要显示title的文字(也可以不设置),该范例是会让它显示的,所以使用res/values/ string/app_about这个字符串常数。

下一步则是显示AlertDialog的正文信息,使用的方法是.setMessage,如果不使用的话,就会发现AlertDialog的正文的字段是不显示的,故在这边设置显示内容为提示对话内容,正文的信息则是res/values/string/app_msg。

而本范例最重要的并非是AlertDialog的设计或流程,因为这些在前一章已经看过了,在此要示范的是如何在AlertDialog里显示图片、配置"确定"以及"取消"按钮,并学会如何判断在AlertDialog里单击的按钮事件,即设计在离开程序之前跳出AlertDialog,让 User再一次确认是否关闭应用程序,并在AlertDialog上设计"确定"与"取消"按钮,当单击"确定"按钮才会真的离开程序,单击"取消"按钮则会回到程序中。

运行结果(见图4-27)

范例程序

1. src/irdc.ex04_26/EX04_26.java

主程序设置的AlertDialog有两个Button,或许有人会询问:Button没有在layout/main.xml里创建,为何会出现呢?这是因为在动态生成AlertDialog的同时,也重写了按钮事件;AlertDialog里面的Button语句,与一般在Layout当中先部署Button不一样,"确定"Button跟"取消"Button都会有追加方法的描述。如"确定"Button的描述是 PositiveButton,而"取消"Button的命令为NegativeButton。

在构造AlertDialog内的"确定"Button中的OnClickListener事件后,如果发生Positive  Button事件,则以finish()结束程序,程序就会自行关闭,这个finish()代表的意思,是把整个Activity给关掉,并由 Android.os回收已配置的系统资源。

01./* import程序略 */    02.   03.public class EX04_26 extends Activity     04.{    05.  /*声明 Button对象*/    06.  private Button mButton1;    07.      08.  /** Called when the activity is first created. */    09.  @Override    10.  public void onCreate(Bundle savedInstanceState)     11.  {    12.    super.onCreate(savedInstanceState);    13.    setContentView(R.layout.main);    14.        15.    /*取得 Button对象*/    16.    mButton1 = (Button) findViewById(R.id.myButton1);    17.    mButton1.setOnClickListener(new Button.OnClickListener()    18.    {    19.      @Override    20.      public void onClick(View v)    21.      {    22.        // TODO Auto-generated method stub          23.        new AlertDialog.Builder(EX04_26.this)    24.        /*弹出窗口的最上头文字*/    25.        .setTitle(R.string.app_about)    26.        /*设置弹出窗口的图式*/    27.        .setIcon(R.drawable.hot)     28.        /*设置弹出窗口的信息*/    29.        .setMessage(R.string.app_about_msg)    30.        .setPositiveButton(R.string.str_ok,    31.        new DialogInterface.OnClickListener()    32.        {    33.          public void onClick    34.          (DialogInterface dialoginterface, int i)    35.          {               36.            finish();/*关闭窗口*/    37.          }    38.        }    39.      ).setNegativeButton(R.string.str_no,    40.        new DialogInterface.OnClickListener()    41.        {    42.          /*设置跳出窗口的返回事件*/    43.          public void onClick(DialogInterface dialoginterface, int i)       44.          {    45.          }    46.        }    47.      ).show();    48.    }    49.  });}    50.}

扩展学习

AlertDialog.setIcon()可以置换对话窗口里的图标,在不设置此方法时就只有文字,若使用了setIcon()方法后,就会将图标显示在对话窗口当中。

你可以试着使用setIcon()方法将Drawable ID传入(默认的drawable路径为res/drawable)即可,以下的代码段可将原本的感叹号图标更换为一个心碎的小图标。

01.new AlertDialog.Builder(EX04_26.this)    02./*弹出窗口的最上头文字*/    03..setTitle(R.string.app_about)    04./*设置弹出窗口的图式*/    05..setIcon(R.drawable.hot)    06./*设置弹出窗口的信息*/    07.//.setMessage(R.string.app_about_msg)   运行结果如图4-28所示。

需留意放入的Icon图片不可以太大,最好先缩图之后再导入项目,若能参考手机画面的分辨率来设计更佳。


相关文章

  • android常见面试题
  • Android面试题班得瑞 (补充) 1.onCreate():当Activity被创建的时候调用(第一次).操作:设置布局文件,初始化视图,绑定数据文件等. 2.onStart():当Activity能被我们看到的时候. 3.onResu ...查看


  • android手机上网及彩信设置
  • android手机上网及彩信设置 2010-09-15 05:38  编辑:丁丁点机器人  评论(1)  移动 NET 套餐的彩信和移动网络设置. 需要两个apn.(如果你还要使用飞信,这个只支持WAP,那么你就需要设置三个apn) ...查看


  • Android外文翻译(Android中英文献)
  • 本科毕业设计(论文) 外文参考文献译文及原文 学 院 信息工程学院 专 业 测控技术与仪器 (光机电一体化方向) 年级班别 2011级(1)班 学 号 学生姓名 指导教师 2015年 6 月 目 录 1 应用程序基础 ........... ...查看


  • 安卓手机常见问题及处理方法
  • 安卓手机常见问题及处理方法 1. 为什么使用XDAndroid 系统手机会明显发热,并且电量消耗很快? 由于Android 的电源管理尚不完善(较之Windows Mobile),因而比较耗电,且使用时手机会发热,尤其是开启Wifi 和充电 ...查看


  • 移动app测试项目实践
  • 移动互联网APP 测试流程及测试点 1 APP测试基本流程 1.1流程图 仍然为测试环境 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正 ...查看


  • android系统在超级终端下必会的命令大全
  • android 系统在超级终端下必会的命令大全 (一.二.三) 1人收藏此文章, 个评论 我要收藏 发表于1个月前(2012-06-20 19:12) , 已有88次阅读 共 android系统在超级终端下必会的 命令大全(一) busyb ...查看


  • 基于安卓系统的游戏开发与实现
  • XX大学 毕业设计(论文) 院 系: 信息工程学院 专 业: 计算机科学与技术 班 级: 学生姓名: XX 学 号: XXXXXXX 导师姓名: XXXX 职称: 讲师 起止时间: 2014 年 3月 1 日至 2014年 5月31日 XX ...查看


  • 怎样制作网页 1
  • 怎样制作网页 1. FrontPage FrontPage是一款优秀的网页制作与开发工具之一,它本身也是Office2000中的一个重要组件,采用了与Office2000其他组件一致的界面和操作方式,只要您使用过Office软件,就可以轻松 ...查看


  • android手机定位
  • android手机定位 做移动互联网就不太可能不碰手机端的开发.上周为了项目需要,俺也挽袖子抡胳膊开始写起了android程序,还好有java基础,倒也上手快,写了几个小程序,主要都是关于定位方面的. 网上也搜得到一些相关的文章和教程,但给 ...查看


热门内容