久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

Android之a(chǎn)ctivity總結(jié)

時間:2019-05-12 12:47:52下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Android之a(chǎn)ctivity總結(jié)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《Android之a(chǎn)ctivity總結(jié)》。

第一篇:Android之a(chǎn)ctivity總結(jié)

Android之Activity總結(jié)

一、什么是Activity

Activity 是用戶接口程序,原則上它會提供給用戶一個交互式的接口功能。它是 android 應(yīng)用程序的基本功能單元。Activity 本身是沒有界面的。所以activity類創(chuàng)建了一個窗口,開發(fā)人員可以通過setContentView(View)接口把UI放到activity創(chuàng)建的窗口上,當(dāng)activity指向全屏窗口時,也可以用其他方式實現(xiàn):作為漂浮窗口(通過windowIsFloating的主題集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是單獨的,用于處理用戶操作。幾乎所有的activity都要和用戶打交道

二、Activity生命周期(生命周期方法)

由圖可知,這些方法調(diào)用的順序:

1.Activity正常啟動:onCreate-> onStart-> onResume;

2.Activity被殺掉:onPause-> onStop-> onDestroy,此為一個完整的生命周期。3.中斷處理:onPause-> onStop,恢復(fù)時onRestart-> onStart-> onResume;

4.如果當(dāng)前Activity是半透明狀態(tài)或者對話框狀態(tài):那么中斷就是onPause ,恢復(fù)的時候onResume。

那么對于”O(jiān)ther app need memory”,就是我們手機在運行一個應(yīng)用程序的時候,有可能打進來電話發(fā)進來短信,或者沒有電了,這時候程序都會被中斷,優(yōu)先去服務(wù)電話的基本功能,另外系統(tǒng)也不允許你占用太多資源,至少要保證一些功能(比如電話),所以資源不足的時候也就有可能被kill掉。

方法在系統(tǒng)中的作用及我們應(yīng)該做什么:

onCreate(創(chuàng)建):在這里創(chuàng)建界面,做一些數(shù)據(jù)的初始化工作;

onStart(可視狀態(tài)): 到這一步變成“用戶可見不可交互”的狀態(tài);

onResume(可交互狀態(tài)):變成和用戶可交互的,(在Activity棧系統(tǒng)通過棧的方式管理這些Activity,即當(dāng)前Activity在棧的最上端,運行完彈出棧,則回到上一個Activity);

onPause(暫停狀態(tài)):到這一步是可見但不可交互的,系統(tǒng)會停止動畫等消耗CPU的事情。從上文的描述已經(jīng)知道,應(yīng)該在這里保存你的一些數(shù)據(jù),因為這個時候你的程序的優(yōu)先級降

低,有可能被系統(tǒng)收回。在這里保存的數(shù)據(jù),應(yīng)該在onResume里讀出來。

OnStop(停止?fàn)顟B(tài)):變得不可見,被下一個activity覆蓋了。

onDestroy(殺死):這是Activity被kill前最后一個被調(diào)用方法了,可能是其他類調(diào)用finish方法或者是系統(tǒng)為了節(jié)省空間將它暫時性的干掉。

onPause,onstop,onDestroy,三種狀態(tài)下 activity都有可能被系統(tǒng)殺掉。

Activity棧:Activity以棧的形式進行管理,后進先出的原則

三、Activity之間的通信

在 Android 中,不同的 Activity 實例可能運行在一個進程中,也可能運行在不同的進程中。因此我們需要一種特別的機制幫助我們在 Activity 之間傳遞消息。

Android 中通過 Intent 對象來表示一條消息,一個 Intent 對象不僅包含有這個消息的目的地,還可以包含消息的內(nèi)容,這好比一封 Email,其中不僅應(yīng)該包含收件地址,還可以包含具體的內(nèi)容。

Intent是一種運行時綁定(runtime binding)機制

Intent負責(zé)對操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android則根據(jù)此Intent的描述,負責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。

在應(yīng)用中,我們可以以兩種形式來使用Intent:

直接Intent(應(yīng)用程序內(nèi)部):指定了component(組建)屬性的Intent。通過指定具體的組件類,通知應(yīng)用啟動對應(yīng)的組件。

間接Intent(應(yīng)用程序之間):沒有指定comonent屬性的Intent。這些Intent需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在在所有的可用組件中,確定滿足此Intent的組件。

對于直接Intent,Android不需要去做解析,因為目標(biāo)組件已經(jīng)很明確。

Android需要解析的是那些間接Intent,通過解析,將 Intent映射給可以處理此Intent的Activity、IntentReceiver或Service。Intent解析機制主要是通過查找已注冊在AndroidManifest.xml(清單)中的所有IntentFilter(意圖過濾器)及其中定義的Intent,最終找到匹配的Intent。

橫屏?xí)r:onConfigurationChanged(配置改變))

橫屏以及出現(xiàn)鍵盤鍵盤時生命周期部重新開始的方法: KeyboardHidHidden/orientation/screenSize 橫屏顯示:landscape 豎屏顯示:portrait

四大組建:activity:活動、service:服務(wù)、content provider:內(nèi)容提供商、broadcast receiver:廣播收音機

Activity的所有面試題

什么是Activity? 請描述一下Activity 生命周期?

兩個Activity之間跳轉(zhuǎn)時必然會執(zhí)行的是哪幾個方法?

你后臺的Activity被系統(tǒng) 回收怎么辦?如果后臺的Activity由于某原因被系統(tǒng)回收可了,如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)?

如何退出Activity?如何安全退出已調(diào)用多個Activity的Application? 兩個Activity之間怎么傳遞數(shù)據(jù)?

第二篇:Android之a(chǎn)ctivity總結(jié)——轉(zhuǎn)自論壇

Android之a(chǎn)ctivity總結(jié)——轉(zhuǎn)自論壇

一、什么是activity Activity 是用戶接口程序,原則上它會提供給用戶一個交互式的接口功能。它是 android 應(yīng)用程序的基本功能單元。Activity 本身是沒有界面的。所以activity類創(chuàng)建了一個窗口,開發(fā)人員可以通過setContentView(View)接口把UI放到activity創(chuàng)建的窗口上,當(dāng)activity指向全屏窗口時,也可以用其他方式實現(xiàn):作為漂浮窗口(通過windowIsFloating的主題集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是單獨的,用于處理用戶操作。幾乎所有的activity都要和用戶打交道,二、activity生命周期

2011-11-20 20:23:32 上傳 下載附件(64.6 KB)由圖可知:

在一個Activity正常啟動過程中,這些方法調(diào)用的順序是onCreate-> onStart-> onResume;在Activity被kill掉的時候方法順序是onPause-> onStop-> onDestroy,此為一個完整的Lifecycle。那么對于中斷處理(比如電話來了),則是onPause-> onStop,恢復(fù)時onStart-> onResume;如果當(dāng)前應(yīng)用程序的是一個Theme為Translucent(半透明)或者Dialog 的Activity那么中斷就是onPause ,恢復(fù)的時候onResume。

那么對于”O(jiān)ther app need memory”,就是我們手機在運行一個應(yīng)用程序的時候,有可能打進來電話發(fā)進來短信,或者沒有電了,這時候程序都會被中斷,優(yōu)先去服務(wù)電話的基本功能,另外系統(tǒng)也不允許你占用太多資源,至少要保證一些功能(比如電話),所以資源不足的時候也就有可能被kill掉。方法在系統(tǒng)中的作用及我們應(yīng)該做什么:

onCreate:在這里創(chuàng)建界面,做一些數(shù)據(jù)的初始化工作;

onStart: 到這一步變成“用戶可見不可交互”的狀態(tài);

onResume:變成和用戶可交互的,(在Activity棧系統(tǒng)通過棧的方式管理這些Activity,即當(dāng)前Activity在棧的最上端,運行完彈出棧,則回到上一個Activity);

onPause:到這一步是可見但不可交互的,系統(tǒng)會停止動畫等消耗CPU的事情。從上文的描述已經(jīng)知道,應(yīng)該在這里保存你的一些數(shù)據(jù),因為這個時候你的程序的優(yōu)先級降

低,有可能被系統(tǒng)收回。在這里保存的數(shù)據(jù),應(yīng)該在onResume里讀出來。

onStop:變得不可見,被下一個activity覆蓋了

onDestroy:這是Activity被kill前最后一個被調(diào)用方法了,可能是其他類調(diào)用finish方法或者是系統(tǒng)為了節(jié)省空間將它暫時性的干掉,可以用isFinishing()來判斷它,如果你有

一個Progress Dialog在線程中運行,請在onDestroy里把他cancel掉,不然等線程結(jié)束的時候,調(diào)用Dialog的cancel方法會拋異常。

onPause,onstop,onDestroy,三種狀態(tài)下 activity都有可能被系統(tǒng)kill 掉。

三、Activity之間的通信

在 Android 中,不同的 Activity 實例可能運行在一個進程中,也可能運行在不同的進程中。因此我們需要一種特別的機制幫助我們在 Activity 之間傳遞消息。Android 中通過 Intent 對象來表示一條消息,一個 Intent 對象不僅包含有這個消息的目的地,還可以包含消息的內(nèi)容,這好比一封 Email,其中不僅應(yīng)該包含收件地址,還可以包含具體的內(nèi)容。對于一個 Intent 對象,消息“目的地”是必須的,而內(nèi)容則是可選項。

Intent負責(zé)對操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android則根據(jù)此Intent的描述,負責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。

在應(yīng)用中,我們可以以兩種形式來使用Intent:

直接Intent:指定了component屬性的Intent(調(diào)用setComponent(ComponentName)或者setClass(Context, Class)來指定)。通過指定具體的組件類,通知應(yīng)用啟動對應(yīng)的組件。

間接Intent:沒有指定comonent屬性的Intent。這些Intent需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在在所有的可用組件中,確定滿足此Intent的組件。對于直接Intent,Android不需要去做解析,因為目標(biāo)組件已經(jīng)很明確。

Android需要解析的是那些間接Intent,通過解析,將 Intent映射給可以處理此Intent的Activity、IntentReceiver或Service。Intent解析機制主要是通過查找已注冊在AndroidManifest.xml中的所有IntentFilter及其中定義的Intent,最終找到匹配的Intent。

四、Activity 的 Intent Filter

Intent Filter 描述了一個組件愿意接收什么樣的 Intent 對象,Android 將其抽象為 android.content.IntentFilter 類。在 Android 的 AndroidManifest.xml 配置文件中可以通過 節(jié)點為一個 Activity 指定其 Intent Filter,以便告訴系統(tǒng)該 Activity 可以響應(yīng)什么類型的 Intent。

當(dāng)使用 startActivity(intent)來啟動另外一個 Activity 時,如果直接指定 intent 對象的 Component 屬性,那么 Activity Manager 將試圖啟動其 Component 屬性指定的 Activity。否則 Android 將通過 Intent 的其它屬性從安裝在系統(tǒng)中的所有 Activity 中查找與之最匹配的一個啟動,如果沒有找到合適的 Activity,應(yīng)用程序會得到一個系統(tǒng)拋出的異常。這個匹配的過程如下:

2011-11-20 20:23:59 上傳 下載附件(16.72 KB)

五、Activity的棧式管理

Android針對Activity的管理使用的是棧,就是說某一個時刻只有一個Activity處在棧頂,當(dāng)這個Activity被銷毀后,下面的Activity才有可能浮到棧頂,或者有一個新的Activity被創(chuàng)建出來,則舊的Activity就被壓棧沉下去了。Activity是Android程序的表現(xiàn)層。程序的每一個顯示屏幕就是一個Activity。正在運行的Activity處在棧的最頂端,它是運行狀態(tài)的。

2011-11-20 20:26:09 上傳 下載附件(23.43 KB)

當(dāng)在程序中調(diào)用 Activity.finish()方法時,結(jié)果和用戶按下 BACK 鍵一樣:它告訴

Activity Manager該Activity實例可以被“回收”。隨后 Activity Manager 激活處于棧第二層的 Activity,把原 Activity 壓入到棧的第二層,從 Running 狀態(tài)轉(zhuǎn)到 Paused 狀態(tài)。

六、Activity的加載模式standard、singleTop、singleTask、singleInstance(其中前兩個是一組、后兩個是一組),默認為standard standard:就是intent將發(fā)送給新的實例,所以每次跳轉(zhuǎn)都會生成新的activity。singleTop:也是發(fā)送新的實例,但不同standard的一點是,在請求的Activity正好位于棧頂時(配置成singleTop的Activity),不會構(gòu)造新的實例singleTask:和后面的singleInstance都只創(chuàng)建一個實例,當(dāng)intent到來,需要創(chuàng)建設(shè)置為singleTask的Activity的時候,系統(tǒng)會檢查棧里面是否已經(jīng)有該Activity的實例。如果有直接將intent發(fā)送給它。singleInstance:首先說明一下task這個概念,Task可以認為是一個棧,可放入多個Activity。比如啟動一個應(yīng)用,那么Android就創(chuàng)建了一個Task,然后啟動這個應(yīng)用的入口Activity,那在它的界面上調(diào)用其他的Activity也只是在這個task里面。那如果在多個task中共享一個Activity的話怎么辦呢。舉個例來說,如果開啟一個導(dǎo)游服務(wù)類的應(yīng)用程序,里面有個Activity是開啟GOOGLE地圖的,當(dāng)按下home鍵退回到主菜單又啟動GOOGLE地圖的應(yīng)用時,顯示的就是剛才的地圖,實際上是同一個Activity,實際上這就引入了singleInstance。singleInstance模式就是將該Activity單獨放入一個棧中,這樣這個棧中只有這一個Activity,不同應(yīng)用的intent都由這個Activity接收和展示,這樣就做到了共享。當(dāng)然前提是這些應(yīng)用都沒有被銷毀,所以剛才是按下的HOME鍵,如果按下了返回鍵,則無效。

七、Activity的跳轉(zhuǎn)Activity跳轉(zhuǎn),無返回結(jié)果 這是最簡單的Activity跳轉(zhuǎn)方式。從一個Activity啟動另一個Activity,直接startActivity(new Intent(當(dāng)前Activity.this, 下一Activity.class))。

Activity跳轉(zhuǎn),返回數(shù)據(jù)/結(jié)果 需要返回數(shù)據(jù)或結(jié)果的,則使用startActivityForResult(Intent intent, int requestCode),requestCode的值是自定義的,用于識別跳轉(zhuǎn)的目標(biāo)Activity。跳轉(zhuǎn)的目標(biāo)Activity所要做的就是返回數(shù)據(jù)/結(jié)果,setResult(int resultCode)只返回結(jié)果不帶數(shù)據(jù),或者setResult(int resultCode, Intent data)兩者都返回!而接收返回的數(shù)據(jù)/結(jié)果的處理函數(shù)是onActivityResult(int requestCode, int resultCode, Intent data),這里的requestCode就是startActivityForResult的requestCode,resultCode就是setResult里面的resultCode,返回的數(shù)據(jù)在data里面。

** 注意,在setResult后,要調(diào)用finish()銷毀當(dāng)前的Activity,否則無法返回到原來的Activity,就無法執(zhí)行原來Activity的onActivityResult函數(shù),看到當(dāng)前的Activity沒反應(yīng)。

第三篇:Android 退出activity 的方式總結(jié)

Android 退出activity 的方式總結(jié)(2012-09-02 22:24:20)在android中使用:[activityname].this.finish();只是退出了activity的堆棧中,要真正的退出程序在手機cpu中的運行,當(dāng)應(yīng)用不再使用時,通常需要關(guān)閉應(yīng)用,可以使用以下三種方法關(guān)閉android應(yīng)用:

一 使用killProcess()函數(shù),首先獲取當(dāng)前進程的id,然后殺死該進程: android.os.Process.killProcess(android.os.Process.myPid());

通過這種方式不能將應(yīng)用程序完全殺死,并且他不會把當(dāng)前應(yīng)用應(yīng)用的Activity的task任務(wù)棧清空

二 在activity的生命周期函數(shù)中添加如下的函數(shù),強制關(guān)閉與該包有關(guān)聯(lián)的一切執(zhí)行:

ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

am.restartPackage(“packagename”);

還需要在AndroidManifest.xml文件中加入如下的權(quán)限:

此做法:只能殺死別人,不能殺死自己

三、終止當(dāng)前正在運行的Java虛擬機,導(dǎo)致程序終止 System.exit(0);不會把自己的應(yīng)用程序殺死

企業(yè)中做法:

創(chuàng)建類app 繼承Application

AndroidMainfest-->name-->app //聲明該類為整個應(yīng)用程序全局的實例

創(chuàng)建整個應(yīng)用程序全局的實例

App.class: ArrayList activities;

其他的Activity中: public void onCreate(Bundle savedInstanceState){ App app =(App)getApplication();//獲取應(yīng)用程序全局的實例引用

app.activities.add(this);//把當(dāng)前Activity放入集合中 }

public void onDestory(){ App app =(App)getApplication();//獲取應(yīng)用程序全局的實例引用

app.activities.remove(this);//把當(dāng)前Activity從集合中移除 }

安全退出:

在菜單退出按鈕的事件中定義如下代碼: App app =(App)getApplication();List activities = app.activities;for(Activity act:activities){ act.finish();//顯式結(jié)束

第四篇:Android關(guān)于Activity管理的一個簡單封裝

我的Android進階之旅------>Android關(guān)于Activity管理的一個簡單封裝

2015-07-30 12:10 631人閱讀 評論(2)收藏 舉報

分類:

Android應(yīng)用開發(fā)(226)

版權(quán)聲明:本文為【歐陽鵬】原創(chuàng)文章,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處!【http://blog.csdn.net/ouyang_peng】

如何管理當(dāng)前的運行Activity棧,如何徹底退出程序,本文封裝了一個Activity管理類,可以方便隨時退出程序。

[java] view plain copy

1.import java.util.Stack;2.3.import android.app.Activity;4.import android.content.Context;5.6.public class ActivityManager {

7.private static Stack activityStack;8.private static ActivityManager instance;9.static {

10.instance = new ActivityManager();11.} 12.13.public static ActivityManager getInstance(){ 14.return instance;15.} 16.17./**

18.* 添加指定Activity到堆棧

19.*/

20.public void addActivity(Activity activity){ 21.if(activityStack==null){

22.activityStack=new Stack();23.}

24.activityStack.add(activity);25.} 26./**

27.* 獲取當(dāng)前Activity

28.*/

29.public Activity currentActivity(){

30.Activity activity=activityStack.lastElement();31.return activity;32.} 33./**

34.* 結(jié)束當(dāng)前Activity

35.*/

36.public void finishActivity(){

37.Activity activity=activityStack.lastElement();38.finishActivity(activity);39.} 40./**

41.* 結(jié)束指定的Activity

42.*/

43.public void finishActivity(Activity activity){ 44.if(activity!=null){

45.activityStack.remove(activity);46.activity.finish();47.activity=null;48.} 49.} 50./**

51.* 結(jié)束指定Class的Activity

52.*/

53.public void finishActivity(Class cls){ 54.for(Activity activity : activityStack){ 55.if(activity.getClass().equals(cls)){ 56.finishActivity(activity);57.return;58.} 59.} 60.} 61.62./**

63.* 結(jié)束全部的Activity

64.*/

65.public void finishAllActivity(){

66.for(int i = 0, size = activityStack.size();i < size;i++){ 67.if(null!= activityStack.get(i)){ 68.activityStack.get(i).finish();69.} 70.}

71.activityStack.clear();72.} 73./**

74.* 退出應(yīng)用程序

75.*/

76.public void AppExit(Context context){ 77.try {

78.finishAllActivity();

79.android.app.ActivityManager activityMgr=(android.app.ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);80.activityMgr.restartPackage(context.getPackageName());81.System.exit(0);82.} catch(Exception e){ } 83.} 84.}

======

下面從http://www.tmdps.cn

17.*
weibo : @橋下一粒砂

18.*
date : 2012-7-8

19.*

20.*/

21.public class ActivityUtil { 22.23./**

24.*
title : 設(shè)置Activity全屏顯示

25.*
description :設(shè)置Activity全屏顯示。

26.* @param activity Activity引用

27.* @param isFull true為全屏,false為非全屏

28.*/

29.public static void setFullScreen(Activity activity,boolean isFull){ 30.Window window = activity.getWindow();

31.WindowManager.LayoutParams params = window.getAttributes();32.if(isFull){

33.params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;34.window.setAttributes(params);

35.window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

36.} else {

37.params.flags &=(~WindowManager.LayoutParams.FLAG_FULLSCREEN);38.window.setAttributes(params);

39.window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);40.} 41.} 42.43./**

44.*
title : 隱藏系統(tǒng)標(biāo)題欄

45.*
description :隱藏Activity的系統(tǒng)默認標(biāo)題欄

46.* @param activity Activity對象

47.*/

48.public static void hideTitleBar(Activity activity){

49.activity.requestWindowFeature(Window.FEATURE_NO_TITLE);50.} 51.52./**

53.*
title : 設(shè)置Activity的顯示方向為垂直方向

54.*
description :強制設(shè)置Actiity的顯示方向為垂直方向。

55.* @param activity Activity對象

56.*/

57.public static void setScreenVertical(Activity activity){

58.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);59.} 60.61./**

62.*
title : 設(shè)置Activity的顯示方向為橫向

63.*
description :強制設(shè)置Actiity的顯示方向為橫向。

64.* @param activity Activity對象

65.*/

66.public static void setScreenHorizontal(Activity activity){

67.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);68.} 69.70./**

71.*
title : 隱藏軟件輸入法

72.*
description :隱藏軟件輸入法

73.*
time : 2012-7-12 下午7:20:00

74.* @param activity

75.*/

76.public static void hideSoftInput(Activity activity){

77.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);78.} 79.80./**

81.*
title : 使UI適配輸入法

82.*
description :使UI適配輸入法

83.*
time : 2012-7-17 下午10:21:26

84.* @param activity

85.*/

86.public static void adjustSoftInput(Activity activity){ 87.activity.getWindow().setSoftInputMode(88.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);89.} 90.91./** 92.*
title : 跳轉(zhuǎn)到某個Activity。

93.*
description :跳轉(zhuǎn)到某個Activity

94.*
time : 2012-7-8 下午3:20:00

95.* @param activity 本Activity

96.* @param targetActivity 目標(biāo)Activity的Class

97.*/

98.public static void switchTo(Activity activity,Class targetActivity){

99.switchTo(activity, new Intent(activity,targetActivity));100.} 101.102./**

103.*
title : 根據(jù)給定的Intent進行Activity跳轉(zhuǎn)

104.*
description :根據(jù)給定的Intent進行Activity跳轉(zhuǎn)

105.*
time : 2012-7-8 下午3:22:23

106.* @param activity Activity對象

107.* @param intent 要傳遞的Intent對象

108.*/

109.public static void switchTo(Activity activity,Intent intent){ 110.activity.startActivity(intent);111.} 112.113./**

114.*
title : 帶參數(shù)進行Activity跳轉(zhuǎn)

115.*
description :帶參數(shù)進行Activity跳轉(zhuǎn)

116.*
time : 2012-7-8 下午3:24:54

117.* @param activity Activity對象

118.* @param targetActivity 目標(biāo)Activity的Class

119.* @param params 跳轉(zhuǎn)所帶的參數(shù)

120.*/

121.public static void switchTo(Activity activity,Class targetActivity,Map params){ 122.if(null!= params){

123.Intent intent = new Intent(activity,targetActivity);124.for(Map.Entry entry : params.entrySet()){ 125.setValueToIntent(intent, entry.getKey(), entry.getValue());

126.}

127.switchTo(activity, intent);128.} 129.} 130.131./**

132.*
title : 帶參數(shù)進行Activity跳轉(zhuǎn) 133.*
description :帶參數(shù)進行Activity跳轉(zhuǎn)

134.*
time : 2012-7-17 下午10:22:58

135.* @param activity

136.* @param target

137.* @param params

138.*/

139.public static void switchTo(Activity activity,Class target,NameValuePair...params){ 140.if(null!= params){

141.Intent intent = new Intent(activity,target);142.for(NameValuePair param : params){

143.setValueToIntent(intent, param.getName(), param.getValue());

144.}

145.switchTo(activity, intent);146.} 147.} 148.149.150./**

151.*
title : 顯示Toast消息。

152.*
description :顯示Toast消息,并保證運行在UI線程中

153.*
time : 2012-7-10 下午08:36:02

154.* @param activity

155.* @param message

156.*/

157.public static void toastShow(final Activity activity,final String message){

158.activity.runOnUiThread(new Runnable(){ 159.public void run(){

160.Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();

161.} 162.});163.} 164.165./**

166.*
title : 將值設(shè)置到Intent里

167.*
description :將值設(shè)置到Intent里

168.*
time : 2012-7-8 下午3:31:17

169.* @param intent Inent對象

170.* @param key Key

171.* @param val Value

172.*/ 173.public static void setValueToIntent(Intent intent, String key, Object val){

174.if(val instanceof Boolean)

175.intent.putExtra(key,(Boolean)val);176.else if(val instanceof Boolean[])

177.intent.putExtra(key,(Boolean[])val);178.else if(val instanceof String)

179.intent.putExtra(key,(String)val);180.else if(val instanceof String[])

181.intent.putExtra(key,(String[])val);182.else if(val instanceof Integer)

183.intent.putExtra(key,(Integer)val);184.else if(val instanceof Integer[])

185.intent.putExtra(key,(Integer[])val);186.else if(val instanceof Long)

187.intent.putExtra(key,(Long)val);188.else if(val instanceof Long[])

189.intent.putExtra(key,(Long[])val);190.else if(val instanceof Double)

191.intent.putExtra(key,(Double)val);192.else if(val instanceof Double[])

193.intent.putExtra(key,(Double[])val);194.else if(val instanceof Float)

195.intent.putExtra(key,(Float)val);196.else if(val instanceof Float[])

197.intent.putExtra(key,(Float[])val);198.} 199.200.}

第五篇:Android總結(jié)

Android四大組件:

Activity—表現(xiàn)屏幕界面

Service—后臺服務(wù)

BroadcastReceiver—實現(xiàn)廣播機制

ContentProvider—實現(xiàn)數(shù)據(jù)存儲

Intent類:用來啟動程序并傳遞信息的類

用于Activity、Receiver、Service之間進行交互的類,通過無參構(gòu)造方法創(chuàng)建對象,增加其action、category、data、extra等屬性進行信息傳遞,并通過Activity中的startActivity(Intent intent)進行界面的跳轉(zhuǎn);通過Context中的StartService(Intent intent)進行服務(wù)跳轉(zhuǎn);通過Context中的registerReceive(Intent intent)對廣播進行注冊,并通過sendBroadcast()進行無序消息發(fā)送,或可以通過SendOrderedBroadcast()進行有序的消息發(fā)送。Handler類:

用來發(fā)送和處理消息,并配合主線程完成UI的更新;消息Message/Runnable傳遞通過MessageQueue(消息隊列,先進先出)進行傳遞,并通過Lopper進行接收,傳遞的消息可以為Message對象,也可以是Runnable對象;接收方法通過HandleMessage(Message msg)進行獲取。SharedPreferences類:

一般用于第一次登錄時的設(shè)置,或者是各個界面的一些小型格式設(shè)置,如字體等。是本地的小型共享數(shù)據(jù)庫,可以通過Context的靜態(tài)方法getSharedPreferences獲得其對象,對象內(nèi)的值均為鍵值對進行儲存。通過SharedPreferences對象調(diào)用editor()獲取SharedPreferences.Editor對象,向共享數(shù)據(jù)庫中增加數(shù)據(jù),putString(),并提交數(shù)據(jù),commit();通過SharedPreferences對象獲取共享數(shù)據(jù)庫中的數(shù)據(jù),getString()。

ViewPager:實現(xiàn)界面滑動的類;

通過設(shè)置OnPagerChangedListener設(shè)置ViewPager的監(jiān)聽事件;

實現(xiàn)流程:

①布局文件中設(shè)置ViewPager控件;

②代碼中進行綁定控件;

③通過繼承PagerAdapter抽象類進行設(shè)置適配器,并傳遞數(shù)據(jù)源;

④適配器中實現(xiàn)兩個抽象方法,兩個重寫方法:getCount()—獲取滑動界面的數(shù)量,isViewFromObject()—判斷視圖是否是來自于Object文件中;重寫兩個方法,分別為destoryItem—銷毀指定位置的視圖;InstantiateItem(),設(shè)置指定位置的視圖;

Timer與TimerTask類:

Timer為計時器的類,通過無參構(gòu)造方法可以獲取對象,通過Timer.schedule(TimerTask task,long time)進行設(shè)置多久后執(zhí)行某任務(wù),當(dāng)任務(wù)執(zhí)行完后,取消計時的功能,Timer.cancle();TimerTask類為抽象類,實例化時,必須重寫run方法;執(zhí)行的內(nèi)容,均在run方法中進行設(shè)置,并且執(zhí)行時,已在子線程中進行執(zhí)行。自定義View:用到的類有Paint、Canvas、Spec、SpecF、Path、View.MeasureSpec、Timer、TimerTask;

抽象類,通過子類繼承,獲取對象;在布局文件中綁定后,通過代碼,設(shè)置自定義View的屬性;自定義View中,通過重寫OnMeasure方法,對布局文件中的尺寸進行測量,并由View中的setMeasureDimenson()方法,進行數(shù)據(jù)的保存;通過重寫Ondraw方法,進行繪圖;當(dāng)需要繪制動態(tài)圖形時,使用計時器Timer的schedule(TimerTask,long time,delay time2)方法,在time時間后,每隔time2時間,重寫執(zhí)行run方法中的內(nèi)容;將耗時的操作設(shè)置在run方法中,并通過View中的invalidate()方法刷新主線程中的繪的圖形,通過postInvalidate()刷新子線程中的圖形。數(shù)據(jù)庫:

常用的數(shù)據(jù)庫有Oracle,需要安裝和配置的大型收費數(shù)據(jù)庫;MySQL是中型數(shù)據(jù)庫,同樣需要安裝配置,但不需要收費;Sqlite是小型免費的嵌入式數(shù)據(jù)庫,占用內(nèi)存低,最新版本為3.0。Sqlite數(shù)據(jù)庫需要通過SqliteDatabaseOpenHelper進行創(chuàng)建數(shù)據(jù)庫,并通過SqliteDatabase進行數(shù)據(jù)庫的操作。輔助類是抽象類,通過繼承,重寫兩個方法,并在子類的構(gòu)造方法中通過OpenHelper的構(gòu)造方法(Context context,String SqlName,SqliteDatabase.CursorFactory factory,int version)進行數(shù)據(jù)庫的創(chuàng)建,在onCreate方法中,進行數(shù)據(jù)庫表的創(chuàng)建,在onUpdate中進行數(shù)據(jù)庫的版本更新。在數(shù)據(jù)庫的操作類中,執(zhí)行exect方法,通過sql語句對數(shù)據(jù)庫進行操作。Create table student(_id integer primary key auto increament ,name text);insert into student(_id,name)values(1,zx);delete from student where _id=1;update student set _id=2 where name=zx;select *from student;ListView、GridView適配器的優(yōu)化:

將布局文件中的控件進行封裝,當(dāng)視圖加載時,判斷可變視圖是否存在,當(dāng)不存在時,通過布局文件獲取視圖,并新建封裝類,將地址通過setTag()進行發(fā)送;當(dāng)視圖存在時,重復(fù)利用地址—getTag()。反射:

存儲數(shù)據(jù)的方式:

共享數(shù)據(jù)庫、數(shù)據(jù)庫、文件、網(wǎng)絡(luò)、內(nèi)容提供者

廣播:

廣播傳播時,需要接收者、發(fā)送者、廣播頻道;根據(jù)發(fā)送者的發(fā)送方式不同,分為有序廣播、無序廣播;有序廣播為接收者有接收順序,根據(jù)設(shè)置的優(yōu)先級不同,確定先后順序,接收者同時也是發(fā)送者,向后面的廣播發(fā)送消息,發(fā)送過程中,可以添加信息,也可以停止廣播的傳輸;無序廣播,接收者之間無聯(lián)系,均從發(fā)送者處接收信息;廣播在傳輸過程中,不能被添加信息,也不可能被停止。廣播在發(fā)送前,需要對接收者進行注冊,注冊方式有兩種,動態(tài)注冊、靜態(tài)注冊。動態(tài)注冊,是在代碼中進行,通過Context對象調(diào)用靜態(tài)方法進行注冊,所有的廣播均可以用動態(tài)注冊,其生命周期依賴于應(yīng)用,相對于靜態(tài)注冊,比較節(jié)省內(nèi)存;靜態(tài)方法在清單文件中進行注冊,部分系統(tǒng)廣播不能通過靜態(tài)注冊進行,其生命周期依賴于系統(tǒng),當(dāng)系統(tǒng)啟動,即運行接收廣播,較耗內(nèi)存。廣播接收者需要繼承BroadcastReceiver,并實現(xiàn)抽象方法onReceive(),通過回調(diào)接口,進行數(shù)據(jù)的傳輸。注意:廣播發(fā)送前,必須進行接收者的注冊,并且,當(dāng)顯示跳轉(zhuǎn)時,不需要意圖過濾器。安卓布局:九種布局

線性布局,水平或垂直方向兩種格式,主要特點為權(quán)重,即規(guī)定各控件在視圖中的占有的比例;

相對布局,相對于父控件或兄弟控件的布局,各控件需指定相對位置; 絕對布局,指定各控件在視圖中的絕對位置,幾乎不再使用; 表格布局,子布局放在行中,列由控件表示(TableRow); 幀布局:覆蓋前面布局的布局,一般用于暫停按鈕等; 風(fēng)格布局:可以跨行、跨列的布局,占滿換行;

左右側(cè)滑:可以實現(xiàn)左右側(cè)滑,通過設(shè)置主菜單和二級菜單設(shè)置左右兩個菜單; 下拉刷新:設(shè)置下拉刷新、上拉加載的功能; 抽屜布局;

安卓版本及對應(yīng)的API:

1.6—4;2—7;3—11;4—15;4.3—18;5—20;5.1—21;6—23;7—25; 安卓四層架構(gòu):

應(yīng)用層:Java語言開發(fā),主要從事App開發(fā);

運行庫層:Java語言與C語言,View視圖、管理類等的開發(fā); 架構(gòu)層:C語言與Linux語言,各種框架、瀏覽器等; 內(nèi)核層:Linux、C語言,開發(fā)各種驅(qū)動; 安卓四大組件:

Activity:界面,實現(xiàn)程序與用戶之間的交換,有自己的生命周期,七個生命周期;4種啟動模式 Service:

BroadcastReceive:三要素,發(fā)送者、接收者、發(fā)送頻道(Intent);類型:有序(接收有序,有數(shù)據(jù)傳送,可以攔截數(shù)據(jù))、無序廣播(相對);注冊方式:靜態(tài)注冊,持久監(jiān)聽,占用內(nèi)存比較高生命周期跟隨系統(tǒng),動態(tài)注冊(代碼中),所有廣播都可以動態(tài)注冊,部分系統(tǒng)廣播不能動態(tài)注冊,臨時監(jiān)聽,占用內(nèi)存較少,生命周期隨應(yīng)用進行;

ContentProvide:不能存放數(shù)據(jù),五種存放數(shù)據(jù)方式之一,特點為:①為數(shù)據(jù)的獲取等操作添加一個統(tǒng)一的接口②可以實現(xiàn)跨應(yīng)用訪問數(shù)據(jù);③可以實現(xiàn)Android中通訊錄、消息、音頻、視頻等的訪問或操作;通過ContentReceive進行數(shù)據(jù)的訪問,可以對數(shù)據(jù)進行增刪改查操作。

動畫: IO流: 序列化: AlertDialog:

Set實現(xiàn)類: 手機電量檢測:

自定義SurfaceView:

自定義View:三個構(gòu)造方法的區(qū)別

Message:Handler.obtain/new/Message.obtain

HttpUriConnection訪問網(wǎng)絡(luò)

gride 異步任務(wù) 動畫

抽象類和接口 反射 克隆 序列化 側(cè)滑的實現(xiàn) 數(shù)據(jù)庫 Socket:

Gson解析

異步任務(wù)和子線程區(qū)別 WebView 版本更新 照片的圓角化

Collection與Collections Sql語句

MVP框架與MVC: TCP與UDP的區(qū)別: 一鍵分享的流程: Http協(xié)議的理解: 不使用框架訪問網(wǎng)絡(luò): List集合與set集合: 自定義View的流程: 線性布局的特點: ViewPager的原理: 服務(wù)的啟動方式:

Activity的啟動方式: Xml數(shù)據(jù)解析:

下載Android之a(chǎn)ctivity總結(jié)word格式文檔
下載Android之a(chǎn)ctivity總結(jié).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    Android數(shù)據(jù)共享之ContentProvider總結(jié)

    Content Provider 由上一節(jié)內(nèi)容,我們了解到Adroid的數(shù)據(jù)都是私有的,那么對于像通訊錄之類,多個APP(撥號、通話、短消息…)都需要共享使用,該怎么實現(xiàn)呢? 答案就是ContentProvide......

    Android學(xué)習(xí)之TextView屬性總結(jié)

    IT在線教育平臺———麥子學(xué)院:http://www.tmdps.cn TextView作為android開發(fā)中最簡單也最常用的控件,作為初學(xué)者,需要熟知其屬性并熟練掌握。如下例: android:autoLink:設(shè)......

    activity策劃書

    策劃書 每天我們可以舉行一項以下活動: 1、 英語讀物的交流 2、 上海文化的交流 3、 未來就業(yè)方向的咨詢 4、 時尚潮流的互動 5、 放映觀看電影 6、 發(fā)現(xiàn)、總結(jié)一些寢室、學(xué)......

    Android WebView總結(jié)(合集)

    Android WebView總結(jié) 1、添加權(quán)限:AndroidManifest.xml中必須使用許可"Android.permission.INTERNET",否則會出web page not available錯誤。 2、在要Activity中生成一個WebV......

    Android 課程總結(jié)

    一、 Android開發(fā)環(huán)境的搭建。 1、 Android SDK的安裝; 2、 ADT的安裝和配置; 3、 Android 模擬器的配置。 二、 編寫第一個Android程序───Hello World(1學(xué)時) 1、 創(chuàng)建一......

    Android方案總結(jié)

    一、硬件描述 如上圖,應(yīng)用程序的開發(fā)過程中我們使用了飛思卡爾的i.MX51 EVK Hardware。 設(shè)備提供的支持如下:多標(biāo)準(zhǔn)音頻回放;多標(biāo)準(zhǔn)視頻回放;開放的系統(tǒng)支持; 二、軟體結(jié)構(gòu) 1、An......

    Android面試總結(jié)

    1.activity的生命周期。 activity主要生命周期的方法說明: onCreate(Bundle savedInstanceState):創(chuàng)建activity時調(diào)用。設(shè)置在該方法中,還以Bundle的形式提供對以前儲存的任......

    Android培訓(xùn)總結(jié)(定稿)

    Android培訓(xùn)總結(jié) 非常高興能夠參加清華大學(xué)的Android暑期培訓(xùn),感謝老師們對我們的教導(dǎo)和關(guān)心,在短短一個月的時間里我學(xué)到了Java、數(shù)據(jù)庫、Android、JSP等知識。最重要的是通......

主站蜘蛛池模板: 午夜性色吃奶添下面69影院| 肉体裸交丰满丰满少妇在线观看| 国产破外女出血视频| 精品少妇一区二区三区视频| 成人啪啪高潮不断观看| 国产亚洲欧美一区二区三区在线播放| 四虎精品 在线 成人 影院| 久久久精品国产一二三产区区别| 中无码人妻丰满熟妇啪啪| 真人与拘做受免费视频一| 国产在线精品无码av不卡顿| 人妻有码中文字幕在线| 久久精品国产亚洲精品| 久久久www免费人成精品| 少妇午夜福利水多多| 精品不卡一区二区| 麻豆国产人妻欲求不满谁演的| 国产精品毛片无码| 美腿制服丝袜国产亚洲| 99re久久资源最新地址| 久久不见久久见免费影院视频观看| 国产sm调教折磨视频| 欧美亚洲综合高清在线| 国产亚洲欧美日韩精品一区二区| 米奇777四色精品人人爽| 国产 高潮 抽搐 正在播放| 久久久www免费人成精品| 99国产精品白浆无码流出| 日日澡夜夜澡人人高潮| 国产激情视频一区二区三区| 日韩精品无码一区二区三区视频| 久久久久蜜桃精品成人片公司| 日韩 亚洲 欧美 国产 精品| 国产毛片欧美毛片久久久| 精品人妻少妇人成在线| 无码av无码天堂资源网影音先锋| 国产亚洲欧美日韩在线一区二区三区| 亚洲日韩亚洲另类激情文学一| 偷偷色噜狠狠狠狠的777米奇| 亚洲成在人线视av| 日韩综合无码一区二区|