zoukankan      html  css  js  c++  java
  • 如何退出Activity?如何安全退出已调用多个Activity的Application?

    如何退出Activity?如何安全退出已调用多个Activity的Application?

        退出Activity直接调用finish()方法  //用户点击back键就是退出一个Activity

        退出Activity会执行onDestory()方法。

        1.抛出异常强制退出:

           该方法通过抛异常,使程序Force Close。

           验证可以,但是,要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。

              //安全结束进程 android.os.Process.killProcess(android.os.Process.myPid());

        2.记录打开的Activity:

           每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。

           List<Activity>lists;  在application全集的环境里面

           lists=new ArrayList<Activity>();

           lists.add(activity);

           for(Activity activity : lists)

            {

               activity.finish();

            }

        3.发送特定广播:

           在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。

           //给某个Activity注册接受广播的意图

               registerReceiver(receiver,filter)

           //如果接受到的是关闭activity的广播,就调用finish()方法,把当前的Activity结束掉。

        4.递归退出

           在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。

          上面是网上的一些做法。

          其实,可以通过intent的flag来实现,intent.setFlag(FLAG_ACTIVITY_CLEAR_TOP)激活一个新的Activity,然后在新的Activity的onCreate()方法里

          finish()掉。

    service是否在main thread中执行,service里面是否能执行耗时的操作?

        默认情况,如果没有显示的指定service所运行的进程,service和Activity是运行在当前app所在进程的main thread(UI主线程)里面

        service里面不能执行耗时的操作(网络请求,拷贝数据库,大文件)

        在子线程中执行  new Thread().start();

        特殊情况,可以在清单文件配置service执行所在的进程,让service在另外的进程中执行。

  • 相关阅读:
    《DSP using MATLAB》 示例 Example 9.12
    《DSP using MATLAB》示例 Example 9.11
    《DSP using MATLAB》示例 Example 9.10
    《DSP using MATLAB》示例Example 9.9
    《DSP using MATLAB》示例 Example 9.8
    《DSP using MATLAB》示例Example 9.7
    《DSP using MATLAB》示例 Example 9.6
    《DSP using MATLAB》示例Example 9.5
    《DSP using MATLAB》示例 Example 9.4
    (转载)【C++11新特性】 nullptr关键字
  • 原文地址:https://www.cnblogs.com/dazuihou/p/3565302.html
Copyright © 2011-2022 走看看