偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

闡述Android apk格式說明

移動(dòng)開發(fā) Android
Android apk文件和SIS一樣最終把a(bǔ)ndroid sdk編譯的工程打包成一個(gè)安裝程序文件格式為apk,想了解的就看一下本文吧。

Android  apk 的構(gòu)造真的很奇妙,它吸取了client/service的思想,apk沒有自己的獨(dú)立入口函數(shù),只是包含一個(gè)或者多個(gè)component,在進(jìn)行程序執(zhí)行時(shí)根據(jù)manifest配置文件來確定需要哪些的component。

而conponent的激活是由intent來觸發(fā)的,intent說穿了就是一個(gè)包括了操作和操作數(shù)據(jù) 的action,相當(dāng)于這個(gè)component就是一個(gè)服務(wù)提供者,intent帶來請(qǐng)求,然后它執(zhí)行請(qǐng)求。而且intent可以指定component來執(zhí)行請(qǐng)求,也可以不指定有component根據(jù)過濾器的匹配來選擇最合適的component來完成請(qǐng)求。

而且還有一個(gè)就是在應(yīng)用 程序?qū)拥膒rocess是以linux user ID來區(qū)分的,每個(gè)進(jìn)程對(duì)應(yīng)一個(gè)虛擬機(jī),但一個(gè)進(jìn)程中可以跑多個(gè)應(yīng)用程序,而不僅僅是局限于一個(gè)。其實(shí)這個(gè)也好理解,一個(gè)應(yīng)用程序就是多個(gè)component,多個(gè)應(yīng)用程序可以看做是很多component組成的一個(gè)apk。

先來看看最基礎(chǔ)的4種component:

1、activity
在Android apk里面activity是一個(gè)UI的概念,一個(gè)應(yīng)用程序可以擁有多個(gè)Activity。實(shí)際上一個(gè)Activity就是一個(gè)窗口,而里面的內(nèi)容就是各種view了。通過setContentView()將窗口和內(nèi)容聯(lián)系在一起。

2、service
service實(shí)際上可以就看成沒有UI而運(yùn)行在后臺(tái)的component,在Android中這個(gè)service又分為兩種,一種就是這個(gè)需要的 service是運(yùn)行在本地進(jìn)程中,也就是說與應(yīng)用程序運(yùn)行在一個(gè)進(jìn)程之類,還有一種就是這個(gè)service運(yùn)行在其他的進(jìn)程中。

3、Broadcast receivers
這個(gè)實(shí)際上就是一個(gè)intent的接收機(jī),當(dāng)系統(tǒng) 廣播intent的時(shí)候,它接收應(yīng)用程序感興趣的事件,broadcast receivers也沒有UI界面。apk可以直接包含這個(gè)component也可以在運(yùn)行的時(shí)候注冊(cè)一個(gè)。

4、Android  apk
這個(gè)按翻譯地來說就是提供一個(gè)公共接口讓應(yīng)用程序?qū)⒈旧淼臄?shù)據(jù)共享出來,其他應(yīng)用可以根據(jù)這些公共接口訪問這些數(shù)據(jù)。它提供了一個(gè)適配口content  resolver,應(yīng)用程序通過這個(gè)適配來操作content provider。當(dāng)應(yīng)用程序開始執(zhí)行的時(shí)候首先讀取manifest,然后根據(jù)這個(gè)xml配置文件來初始化一些component,然后它就停止等待intent的到來了。

因此在一個(gè)應(yīng)用中非常重要的幾個(gè)概念就是:component ,  manifest.xml,intent, intent-filter。而在component 中比較重要的應(yīng)該就是activity和service 。下面我們來看看一個(gè)進(jìn)程的生命周期:一個(gè)進(jìn)程被打開之后操作系統(tǒng) 會(huì)盡量保持其運(yùn)行狀態(tài),當(dāng)發(fā)現(xiàn)內(nèi)存不足的時(shí)候系統(tǒng)會(huì)根據(jù)以下的優(yōu)先級(jí)來強(qiáng)制kill進(jìn)程:

1、empty process首先考慮被關(guān)閉的是不含任何激活的component的進(jìn)程,保留這樣的進(jìn)程的主要的原因是為了restart的時(shí)候能快一點(diǎn),因此在內(nèi)存不足的時(shí)候這類進(jìn)程是首先考慮被kill掉的。

2、background process
其次考慮被關(guān)閉的是擁有activiry,但這個(gè)activity處于不可見狀態(tài)的線程

3、visible process
第三考慮的就是進(jìn)程的activity可見,但是卻不是在forground正在與用戶交互的那個(gè)。

4、forground
***考慮的才是activiry處于最前段的進(jìn)程。在這里還有一個(gè)問題,那就是如果一個(gè)進(jìn)程綁定了一個(gè)service,那他的優(yōu)先級(jí)是比一個(gè)后臺(tái)運(yùn)行的進(jìn)程要高的,也就是說它相比之下不那么容易被kill 掉。#t#

因此在設(shè)計(jì)應(yīng)用程序的時(shí)候綁定一個(gè)service比在進(jìn)程中開辟一個(gè)線程來運(yùn)行長(zhǎng)時(shí)間任務(wù)要保險(xiǎn)得多。在manifest.xml中每個(gè)component都有一個(gè)process選項(xiàng)來指定其運(yùn)行的進(jìn)程可以讓一個(gè)應(yīng)用程序的Android  apkt運(yùn)行在一個(gè)進(jìn)程。

也可以讓多個(gè)應(yīng)用程序的component運(yùn)行在一個(gè)進(jìn)程來共享數(shù)據(jù)。在java中專門提供了一種語言IDL用來自動(dòng)生成遠(yuǎn)端進(jìn)程調(diào)用的源碼,應(yīng)用只需要實(shí)現(xiàn)它的一些接口就可以了,這就方便了RPC編程。

責(zé)任編輯:chenqingxiang 來源: CSDN
相關(guān)推薦

2010-01-06 17:06:05

Json格式

2010-01-07 17:48:02

JSON結(jié)構(gòu)

2010-01-05 17:35:09

JSON數(shù)組格式

2010-02-03 17:37:30

Python語法

2009-12-17 15:22:27

Visual Stud

2010-01-13 09:38:17

C++單元測(cè)試

2010-01-06 10:27:32

JSON數(shù)組

2009-12-10 17:11:14

.NET Framew

2010-01-08 15:30:15

JSON格式舉例

2010-01-13 15:51:44

C++編程語言

2010-01-12 09:39:58

C++語言

2009-12-18 16:28:35

ADO.NET結(jié)構(gòu)

2010-03-02 16:34:06

Android平臺(tái)

2010-01-08 09:03:38

返回JSON數(shù)據(jù)

2010-02-03 16:46:07

Python特定數(shù)據(jù)庫(kù)

2010-01-07 15:36:22

JSON轉(zhuǎn)化

2009-12-22 10:43:48

ADO.NET類庫(kù)

2010-02-07 15:20:05

Android

2010-01-04 16:02:32

ADO.NET計(jì)數(shù)器

2010-01-13 17:12:26

C++編譯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)