Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 對Android的惡意吐槽(勿看,有毒)

對Android的惡意吐槽(勿看,有毒)

編輯:關於android開發

對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外,其余的該改名改名,該去掉的去掉。如此則它好我們也好,反正是極好的。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved