• System.exit(0);和finish();,push原理


    今天师姐问我安卓后台的问题,想起几年前做进制转换的时候特意研究了一下怎么才能「不驻留内存地退出」。虽然Android不推荐用户手动关闭进程,但是在那个内存捉襟见肘的年代,不得不考虑内存。

    首先直接按back键肯定是会驻留内存的,其次finish()也可以结束Activity,但是也驻留内存(我还清楚地记得当时做过实验,业界良心没有没)。试了很多方法,最后找到一种方法可以退出:

    在底层的Activity上添加back键监听,然后在onClick()里面用这个方法:

    System.exit(0);

    网上说原理是:

    终止当前正在运行的 Java 虚拟机。此方法从不正常返回。可以将变量作为一个状态码;根据惯例,非零的状态码表示非正常终止。

     

    另外,关于push,之前一直搞不清楚原理,尤其是第三方push,好像有各种各样的Receiver,在知乎上找到一篇答案

    iOS 的推送:就是 Apple 官方的 APNs (Apple Push Notification service)。
    Android 的推送:Google 官方的是 GCM (Google Cloud Messaging)。

    本质上,APNs 与 GCM 是类似的技术实现原理:即系统层有一个常驻的 TCP 长连接,一直保持的长连接,即使手机休眠的时候也在保持的长连接。

    iOS 为了真正地为用户体验负责,不允许应用在后台活动。有了这个限制,但是对于终端设备,应用又是有必要“通知”到达用户的,随时与用户主动沟通起来的(典型的如聊天应用)。

    这就是 APNs 的逻辑所在:iOS 自己做个长驻后台保持连接。所有应用,有必要(申请)并且被允许(用户可以改设置)的话,可以通过 APNs 中转到达用户。

  • 相关阅读:
    c++中的复合类型
    c++获取随机数
    静态成员数据和静态成员函数
    c++之window.h
    算法之美---100幅由程序生成的图像,总有一幅让你感到惊艳[上]
    分形的程序实现
    使用异或运算交换两个任意类型变量
    游戏中角色曲线行走的算法
    算法之美---由计算机生成的图像
    数学图形之肾形
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3965154.html
Copyright © 2020-2023  润新知