• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 对Android的恶意吐槽(勿看,有毒)

对Android的恶意吐槽(勿看,有毒)

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android恶意软件,庶女有毒吐槽,android,android是什么意思,android studio等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

对Android的恶意吐槽(勿看,有毒)


我认为android系统中有一个特恶心人的大败笔。就是这个大败笔造成了android系统的卡卡卡不停。

这个大败笔就是对activity的设计。

Android对activity的设计原则是:必须是运行时独立的。

你不能直接创建activity并启动它,必须由系统帮你这样干。你要启动activity,必须用一个Intent请求系统帮忙。所以你要在manifest文件中声明app中的每个activity。如果你有多个activity声明为可启动的并且指定了intent-filter,那么每个activity都有可能成为你app的入口。

既然每个activity都可能成为入口,那每个activity必须是功能独立,自我圆满的。也就是说淡化了进程的概念,一个activity如果destroy了,即使它所在的app进程没有退出且又启动了新的activity,也应该视为这个activity的app退出了。

然而理想太丰满,现实不鸟你。有几个人能有如此共产主义思想与精力把自己的每个activity都搞成像系统的打电话发短信这样的app?大部分activity都是内部使用的,每个都被搞得很独立太费劲了,尤其是app内部的activity之间共享数据时更麻烦,按其原则应把数据放到intent的附加数据中,以startActivityForResult()启动下一个activity,并且在onActivityResult()中接收下一个activity返回的数据,然而如果搞成全局静态数据的话多省事?

这种设计是不是太过分了?你可以杀死与前台app无关的activity或进程,但你怎么能杀死前台app中的activity呢?与其让系统谋杀它还不如让程序员自己去杀它。再说了如果系统内存连一个app的正常运行都维持不住了,那是不是这个app设计得太差了?

还有一个更混乱之极的情况:最新的android系统中提倡导航栏(难道是要跟苹果学,省掉一个键?),于是在导航栏中就有了返回按钮。但是当从Activity A中启动B,然后在B的导航栏上点返回按钮返回A时(在manifest文件中将A指定为B的爸爸),实际上A已经不是原来的A了,而是重新创建了一个,这事是不是太扯蛋了?这种情况下A中的onActivityResult()是永远不会被执行!所以要注意,点导航栏上的返回按钮与点设备的返回键,其效果是不同的,不同的,不同的。。。扯蛋的事情说三遍!

还有,android的开发文档中明确说如果activity中开了后台线程,应该在onDestroy中关闭它。好吧,一般一个app都由多个页面导航完成操作流程,也就是说开多线程的activity在隐藏和显示之间切换时要不停地开关开关开关多线程?

那有没有办法解决这个问题呢?有!可以利用另一个功能独立,自我圆满的组件:service。利用service做后台事务,activity在显隐之间就不会影响到后台任务了,但又要做activity与service之间的通讯,好麻烦。

但有解决办法总比没有强!

还没完,由于这种设计原则带来了更混乱的activity生命周期管理问题!看一下这个图,activity的生命周期多么恐怖!
这里写图片描述

还有这个图:

这里写图片描述

(关于Activity的生命周期<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPri01NO+zcvjwcujrLj8stm1sLXEyseyu9K71sLQ1KOhsb7AtM7Sw8fS1M6qb25TdG9wKCnSu7aottTTpm9uU3RhcnQoKaOsy63WqrXAsOvCt8mxs/a49m9uUmVzdGFydCgpoaNvblN0YXJ0KCnWrrrzu7myu8vj1MvQ0Ne0zKyjrLu50qrU2cC0tcRvblJlc3VtZSgpILLFy+OjoW9uQ3JlYXRlKCnG5Mq1sqKyu8rHttTTpm9uRGVzdHJveSgpo6y2+MrHttTTpm9uU3RvcCgpo6zO0lijrL/J0tTC7sjLwvCjvzwvcD4NCjxwPrWr1+7X7rO2tbC1xMrHo6zI57n7xOPSqrGjtOZhY3Rpdml0ecnPv9i8/rXE17TMrKOsxOPQ6NKq1NpvblBhdXNlKCnW0Nf2o6HT0L+0udnLtcHLo6yyu8rHb25QYXVzZSgpo6y2+MrHb25TYXZlSW5zdGFuY2VTdGF0ZSgpoaPKx7XEo6zKtbzKyc/Kx29uU2F2ZUluc3RhbmNlU3RhdGUoKdbQo6y1q8rHb25TYXZlSW5zdGFuY2VTdGF0ZSgptcS199PDyrG7+srHvfS4+m9uUGF1c2UoKbXEo6zL+dLUtNPKsbv6wLTLtdPr1NpvblBhdXNlKCnW0NKyw7u24MnZx/ix8KGj1eK+zcrHzqrKssO0YW5kcm9pZL3nw+a/qL+ov6jBy6OhucfX08DvtPi1xKOszt63qL3ivvajoda70qrS/cbwb25QYXVzZSgptffTw6OssdjIu7vhsOnL5tOyxcyjqLTmtKLG96OpstnX96Oh0rK+zcrH1NnQobXEYWN0aXZpdHnH0Lu7o6y2vLvh0v3G8NOyxcyy2df3o6G1q8bkyrXU2tTL0NDSu7j2YXBwtcS5/bPM1tCjrNXi1tay2df3sNm31tauOTnKx7K70OjSqrXEo6zS8s6qYWN0aXZpdHm4+rG+w7vT0GRlc3Ryb3mjocv509C1xL/YvP62vNTaxNq05tbQsaOz1tfFy/zDx7XE17TMrMTYo6HOqsqyw7RJT1O958Pmy7Ojv9LyzqpJT1PA78O709DV4tH5stm1sLXEyei8xqGjSU9TwO+1xFZpZXdDb250cm9sbGVy0+thY3Rpdml0ebrcz+DLxqOstavItMO709DSqsfzsdjQ67Gjs9bUy9DQyrG2wMGi0NShozwvcD4NCjxwPmFuZHJvaWTP1tTa09CzrUlPU7XEtdi3vaOsschMaXN0Vmlld7XEzOa0+sa3o7pSZWN5Y2xlVmVpd6OsxuRpdGVttcTW2NPru/rWxtPrSU9TtcRVSVRhYmxlVmlld7XEY2VsbLrcz+DLxsHLo6zOqsqyw7Syu7DRYWN0aXZpdHm1xMnovMbSss/ySU9T0afSu8/CxNijvzwvcD4NCjxwPru509DSu7j2s7a1sLXEyei8xqO6vs3Kx8bBxLvQ/deqyrGjrGFjdGl2aXR5u+Gxu2Rlc3Ryb3nU2WNyZWF0ZaGjuPq+3ceww+bL+b2yo6y/ydLU1qq1wGRlc3Ryb3m6zWNyZWF0Zbn9s8zW0LXEtPq829PQtuC086Gj1eK49rn9s8zW0GFwcL34s8y4+rG+w7vT0M3Ls/ajrM6qw6vO0tKq1NrGwcS70P3Xqrn9s8y52LHVz9+zzNTZv6rG9KO/zqrDq87S0qq52LX0zfjC59TZ1tjBrKO/tvhJT1PE2KO/1rvKx82ouf3Su7j2u9i197e9t6i4+LP2zajWqqOszerIq7K7u+G52LX0dmlldyBjb250cm9sbGVy1NnW2L2ooaO1sci708nT2tbYvahhY3Rpdml0eaOsYW5kcm9pZL7N09DBy7HISU9TuPzFo0K1xMTcwaajurrhxsG6zcr6xsG/ydLU09DN6sirsrvNrLXEbGF5b3V0oaPG5Mq1SU9T0rK/ydLUsKGjrNa70qrE48q1z9bP7NOmxsHEu9D916q1xLvYtfe3vbeoo6zU2sbk1tDX1Ly608O0+sLrtffV+2xheW91dL7N0NDBy6GjPC9wPg0KPHA+ztLIz86qYW5kcm9pZNLRvq3Iz8q2trzKx9XiuPa07c7zo6zL+dLUzcaz9sHLRnJhZ21lbnTV4rj2tqvO96GjZnJhZ21lbnTL5Mi70rLT0Mn6w/zW3Mbao6y1q8rHy/yyu7vhsbvPtc2z1ve2r8mxy8CjrNa70qrL/Mv51Nq1xGFjdGl2aXR5srvLwKOsy/y+zdK71rG05tTao6y2+MfSxuTKtcTj0rK/ydLUyMPL/MDrv6phY3Rpdml0edLAyLu77tfFo6y2+MfSxOPSsr/J0tS+9raoZnJhZ21lbnS1xMn6y8CjrMjnufvE48/ryqHE2rTmo6zE47/J0tTW97avuMm19GZyYWdtZW50oaM8L3A+DQo8cD7T0MHLZnJhZ21lbnSjrMTjtcRhcHC/ydLU1rvT0NK7uPZhY3Rpdml0eaOsvai24Lj2ZnJhZ21lbnSjrNKzw+bH0Lu7vs3Kx2ZyYWdtZW50vOTH0Lu7oaPV4tH5s/3By8bBxLvQ/deqyrGjrLTzsr+31sfpv/bPwrK7tObU2s/6u9m6zdbYvajOyszioaOyu9DFwvCjv8Tjv8nS1L+0tb253MDtZnJhZ21lbnS1xEFQSdbQo6zT0L2rZnJhZ21lbnS808jruvPNy9W7tcS3vbeoo6y6883L1bvT67W8ur3AuMnPtcS6883LsLTFpbK71f26w7/J0tTF5LrP0LSz9rjf0Ke1xM/ytbzA4NDNtcS958PmwvCjv8v50tS087zS0tS689KqtuDTw2ZyYWdtZW50ydnTw2FjdGl2aXR5o6xhbmRyb2lkzcaz9mZyYWdtZW50o6y+zcrHz+vIw8Tj1eLR+df2o6zWu7K7uf2yu7rD0uLLvLDR19S8utStwLS1xMnovMbIq77Wt/G2qKOstPLX1Ly6tcTBs7DJwcuhozwvcD4NCjxwPtfuuvPU2cu10rvPwrnY09phbmRyb2lks8zQ8rXE08W7rzo8L3A+DQrK18/Ivs3Kx7C0yc/D5sv5y7Wjurbg08NmcmFnbWVudKOsydnTw2FjdGl2aXR5oaPG5Mq11eLSu8z1vs25u8HLoaPG5Mv8tcTTxbuvtrzKx9XrttTX1Ly606bTw7XEwt+8rb340NDM2MritcTTxbuvo6y+38zlzsrM4r7fzOW31s72oaMgxuS0zsrH08PX7tDCtcRBUEmjrNDCv6q3orD819y74bT4wLTSu9Cp08W7r6Osu/LM4bmp0MK1xLj8uN/Qp7XE1+m8/qOsscjI59PDUmVjeWNsZVZpZXe0+szmTGlzdFZpZXe6zUdyaWRWaWV3IKGjINTZtM7Kx8Tc08NDus1DKyu+zbbg08NDus1DKyuwyaGjxuTKtdXi0rvM9c7SsqKyu83GvPajrNLyzqq007T6wuvOrLukvce2yL2yo6y7ucrHxNzTw2phdmG+zdPDamF2YaGjtavI57n7xOO3x9Kq08W7r7W9vKvP3qOsxMe+zbbg08NDus1DKys8c3Ryb25nPqOoz7K7tk5ES7rNYysrsqLH0rv5tKG63LLutcTNrNGnv8nS1LzTyOvV4rj2yLqjujxlbT4qNTM1ODA3MDIzPC9lbT48L3N0cm9uZz6jqSqhoyDX7rrzo6zI57n7xOOyu8XCwum3s6Osvs3X1Ly6tKbA7cbBxLvQ/deqo6y088zlyOfPwqO6PGJyIC8+DQrOqsTjtcRtYW5pZmVzdM7EvP7W0LXEYWN0aXZpdHnUqsvY1Pa808r00NSjug0KPHByZSBjbGFzcz0="brush:java;"> android:configChanges=“orientation|keyboardHidden”

然后在activity中响应回调方法:
public void onConfigurationChanged (Configuration newConfig) 

希望在新的版本中,andorid重拾进程的概念,让大家能自由决定是否将activity搞成运行时独立,进一步向IOS学习,将activity的pause改成“进入后台”,将resume改成“成为前台”,除了生命周期中最主要的create和destroy外,其余的该改名改名,该去掉的去掉。如此则它好我们也好,反正是极好的。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 对Android的恶意吐槽(勿看,有毒)

相关文章

  • 2017-05-26Android:让WebView支持&lt;input type=”file”…&gt;元素,androidwebview
  • 2017-05-26Android中的属性动画(Property Animation)——Android开发艺术探索笔记
  • 2017-05-26go 常用命令扼要说明
  • 2017-05-26Linux主机网络流量监控ifstat
  • 2017-05-26Java字节流在Android中的使用,java字节流android
  • 2017-05-26android:descendantFocusability用法,
  • 2017-05-26onInterceptTouchEvent与onTouchEvent默认返回值,ontouchevent返回值
  • 2017-05-26Android学习笔记(31):滚动视图ScrollView浅析
  • 2017-05-26Android GZIP压缩IO流,优化APP数据传输(一),androidapp
  • 2017-05-26Android百度地图API集成一《基础地图》,集成百度地图api

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 安卓学习----使用okHttp(POST方式)---登录,安卓okhttp
    • 踩坑实录 Android studio中关于 No cached version of **** available for of处理办法,androidcached
    • React Native,reactnative
    • Touch事件分发
    • [Android]Animation 动画介绍和实现,androidanimation
    • 安居客Android项目架构演进,android架构演进
    • Android Studio 之 注释模板,androidstudio
    • linux命令之tcpdump
    • Android实现按钮点击效果(第一次点击变色,第二次恢复),android按钮
    • 关于android的一些基础知识,android基础知识

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有