Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> 進行對Android應用程序全解析

進行對Android應用程序全解析

編輯:高級開發

android應用程序提供的Eclipse插件使得運行我們的程序非常簡單。選擇Run > Open Run Dialog菜單;你會看到一個對話框,在這個對話框中就像配置J2ME運行環境一下,配置一個Luncher。

大功告成!點擊run按鈕,Androi模擬器將運行。當模擬器啟動完成你將看到你的程序。到這裡我們就完成了!按照正常思路,一定會想,程序入口點在哪裡呢?為什麼會從這個Activity 啟動呢?

現在用我們自己的最容易理解的方式來表述:這是因為當啟動這個程序的映像文件時,會發送一個事件對象Intent, 帶有MAIN的行為屬性,而自動生成的代碼及文件, 有一個androidManifest.XML會為HelloWorld這個Activity 配置一個事件過濾器,表明實現了MAIN action,LAUNCHER category的入口點行為。請注意其中的幾行:

  1. @Override
  2. public void onCreate(Bundle icicle) {
  3. super.onCreate(icicle);
  4. TextVIEw tv = new TextVIEw(this);
  5. tv.setText("Hello, android");
  6. setContentVIEw(tv);
  7. }

在多數情況下, 每個android應用程序運行在自己的Linux進程中. 當一個應用的某段code需要運行的時候這個進程將會被創建, 直到不再需要該應用或系統要為其他的應用釋放內存的時候才停止.

一個非常重要且少有的特性是, 應用進程的存活時間不是由這個應用直接控制的. 而是由系統決定的, 系統會根據每個已知的正在運行的應用情況來定奪, 包括, 該應用對用戶的重要性和系統全部可用內存.

對於開發人員來講, 了解每個應用組件(尤其是, Activity, Service, 和IntentReceiver)對於應用進程存活時間的影響是非常重要的. 如果沒有正確使用, 可能會導致應用進程在處理重要工作的時候被系統殺掉.

在對應用進程生命周期的理解中, 一個典型的錯誤就是當一個IntentReceiver 接收到Intent 之後, 會在自己的onReceiveIntent()方法中開起一個線程。而後return這個方法. 一旦這個方法return, 系統會認為這個IntentReceiver 不在處於活躍狀態, 也就認為他的宿主進程不再需要(除非還包有其他活躍的應用組件)。

以至於當系統需要回收內存的時候會隨時釋kill掉這個進程, 中止其中的子線程. 解決這個問題的辦法是在IntentReceiver中啟動一個Service, 這樣系統會知道在這個進程中還有活躍的任務需要完成. 為了決定在內存較低的時候殺掉哪個進程, android應用程序會根據運行在這些進程內的組件及他們的狀態把進程劃分成一個"重要程度層次". 其重要的程度按以下規則排序:

前端進程可以是一個持有運行在屏幕最前端並與用戶交互的Activity的進程(onResume方法被調用時),也可以是持有一個正在運行的IntentReceiver(也就是說他正在執行自己的onReceiveIntent方法)的進程。

在系統中, 只會有少數這樣的進程, 並且除非內存已經低到不夠這些進程運行, 否則系統不會主動殺掉這些進程. 這時, 設備通常已經達到了需要內存整理的狀態, 所以殺掉這些進程是為了不讓用戶界面停止響應。

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