1. 程式人生 > >Android Acitivity之間如何傳遞資料

Android Acitivity之間如何傳遞資料

IT168技術】任何控制類程式都有一個入口,彙編程式的入口由處理器內部的復位(Reset)中斷向量表決定;C程式的入口是main()函式,一個C程式只能有一個main()函式;Java程式的入口必須是某個類的靜態成員函式main()。

  對於依賴於作業系統的程式,客戶程式除了包含一個程式入口外,還需要和相關係統服務一起執行,以完成指定的任務。比如,Win32程式需要和GUI系統服務一起實現帶有可視視窗的功能;X Window程式也需要和X Window Server一起實現視窗功能。Android程式也不例外,那麼,Android程式的入口在哪裡?Android Framework都包含哪些必需的系統服務?這些系統服務是如何與Android APK程式配合的?

  程式設計師需要在不同的Activity之間傳遞資料,然而,這個問題本身就有問題。所謂“傳遞訊息”一般是指多個執行緒之間,而Activity本身並不是執行緒,ActivityThread才是一個執行緒,即UI執行緒。同一個程式中的多個Activity都由ActivityThread進行呼叫,Activity本身只是一個Java類而已,就像Rect、Trigle類一樣,如果有人問“Rect類和Trigle類之間如何傳遞訊息”,你會不會覺得有點奇怪?

  事實上,如果要在兩個類中傳遞資料,方法可以有很多。

  方法一:可以先例項化某個類,獲得該類的引用,當其他類需要該物件的內部資料時,可以直接通過該引用去訪問該類的內部資料。

  方法二:對於A、B兩個類之間,可以先例項化一個第三方類C,然後兩個類都可以把需要傳遞的資料存入C中,或從C中取出。

  這些方法理論上都可以用在Activity類之間傳遞資料。然而,與普通類傳遞資料有所不同,普通類的例項化都是程式設計師顯式完成的,而Activity類的例項化卻是由Framework完成的,程式設計師只能使用startActivity()方法來告訴Framework去執行哪個Activity,這就意味著程式設計師不能得到Acitivity物件的引用,那麼就不能直接訪問該物件的內部資料。解決的辦法是使用Activity.getApplication()函式,該函式能夠返回一個Application物件,該Application物件在該程式中是唯一的,同一程式中的不同Activity呼叫該函式所返回的Application物件是相同的,該物件的名稱可以在AndroidManifest.xml中指定。一旦獲取了該Application物件,就可以藉助該物件,在不同的Activity之間傳遞資料。

  除此之外,Framework本身也提供了標準的Activity之間傳遞資料的方法,即Intent類。該類作為startActivity()的引數,僅用於在啟動Activity時傳遞給目標Activity,同時,如果呼叫startActivityForResult(),目標Activity在結束後,也會返回一個Intent物件給原Activity。

  另外,從設計理念的角度來看,Android認為,兩個Activity如果要共享資料,可以通過Preference Storage或者檔案、資料庫進行,同時,在一般情況下,裝置上只會有一個Activity在執行,因此,多個Activity之間傳遞資料也不是必需的。如果某個Activity需要在停止後還能處理某些資料,那麼,該Activity似乎更應該被設計為一個後臺的Thread或者一個Service,無論是Thread還是Service都很容易獲得其引用。

相關推薦

關於Android Activity之間傳遞資料的6種方式

使用Inten的putExtra傳遞 第一個Activity中 ? 1 2 3 4 5 6 //建立意圖物件  Intent intent = new Intent(this,TwoActivity.class);  //設定傳

Android Acitivity之間如何傳遞資料

【IT168技術】任何控制類程式都有一個入口,彙編程式的入口由處理器內部的復位(Reset)中斷向量表決定;C程式的入口是main()函式,一個C程式只能有一個main()函式;Java程式的入口必須是某個類的靜態成員函式main()。   對於依賴於作業系統的程式,客

6.Android的學習(Intent跳轉頁面,活動之間傳遞資料)

Intent跳轉頁面 (1)使用顯示Intent,首先建立一個空的活動,並且有佈局,在onClick()下面新增: Intent裡面的第一個引數是當前活動頁面,第二引數是要跳轉的活動頁面。這段程式碼在當前活動頁面。 2.  (1)向下一個活動傳遞資料  · 主活動介

Android Intent傳值(兩個Activity之間傳遞資料

在兩個Activity之間傳遞資料,最終都是通過Intent傳遞,但設定資料和儲存資料方式有兩種(使用Intent 和 Bundle),分別對應如下: 設定資料(MainActivity.java) 方法一:1.直接用intent.putExtra(“name”,“張三”)

Android 學習之路一:Activity之間傳遞資料的四種方式

傳遞資料 新建 Activity 在專案中右鍵,選擇 New,繼續選擇中下方的 Activity,最後是 Blank Activity。 此時 Android Studio 會為我們自動新增一個對應的佈局檔案,為佈局檔案中的 TextView 新增 I

Android 兩個Activity之間傳遞資料及返回

從Activity1帶引數跳轉到Activity2這個經常用到,比較熟悉,但如何從Activity2將資料返回給Activity1呢?這個其實也不麻煩,動手敲一下就知道了。 Activity1程式碼:public class MainActivity extends A

Android Activity之間實現資料(物件,物件集合)傳遞

Android Activity之間實現資料傳遞是一項非常重要的技術,今天我就來講一講如何實現資料傳遞: 1.基本資料傳遞 MainActivity.java Intent intent=new Intent(this,ThinkActivity.cla

Android基礎 -- Activity之間傳遞資料(bitmap和map物件)

這邊文章很古老了,看到還有朋友回覆,這裡更新幾點,避免誤導大家。 第一,傳遞HashMap物件  HashMap本身已經實現了Cloneable, Serializable,Intent傳遞時,直接強轉就可以了。(感謝@qcks指正) Map<String, St

Android 使用Intent在活動之間傳遞資料

直接上程式碼 第一個Activty: public class MainActivity extends Activity { // 請求碼,必須是唯一值 private stati

Android 開發】 : Activity之間傳遞資料的幾種方式

在Android開發中,我們通常需要在不同的Activity之間傳遞資料,下面我們就來總結一下在Activity之間資料傳遞的幾種方式。 1. 使用Intent來傳遞資料 Intent表示意圖,很多時候我們都會利用Android的Intent來在各個A

Android Activity之間資料傳遞

1、向目標Activity傳遞資料: 1 Intent intent=new Intent(this,Main2Activity

Android:Bundle傳遞資料和物件

1、Bundle傳遞資料, 因為Bundle中已經封裝好了簡單資料型別,所以我們直接去設定資料,下面就來看看具體的操作: case R.id.Btn_Msg: // 例項化一個Bundle Bundle bundle

Android頁面之間進行資料回傳

要求:頁面1跳轉到頁面2,頁面2再返回頁面1同時返回資料 頁面1新增如下程式碼:  Intent intent = new Intent(this,Activity02.class);       Bundle bundle = new Bun

MFC視窗之間傳遞資料(結構體)

MFC視窗之間的通訊一般會利用傳送訊息的方式傳遞,那麼具體如何實現呢,程式碼如下: 下面實現的是一個子視窗把訊息傳送到主視窗的示例: 1.訊息傳送視窗部分程式碼: 首先新增自定義訊息; #defi

Activity之間傳遞資料的方式及常見問題總結

Activity之間傳遞資料一般通過以下幾種方式實現: 通過intent傳遞資料 通過Application 使用單例 靜態成員變數。(可以考慮 WeakReferences) 持久化(sqlite、share preference、file等)

[ObjectARX]-在圖形資料庫之間傳遞資料 Wblock

(1)使用ObjectARX嚮導建立一個新工程,名稱為Wblock. 新增普通類CBlockUtil,並在類中新增函式CopyBlockDefOtherDwg,用於將其他Dwg檔案 中的塊定義賦值到當前圖形資料庫。 實現程式碼: AcDbObjectId CBlockU

ANDROID----使用Intent傳遞資料----startActivityForResult

eg: //這個是在第一個顯示的Activity中 Intent intent=new Intent(MainActivity.this,otherActivity.class); startActivityForResult(intent,requestCode); 在另外一個Activi

多頁面之間傳遞資料的方法

傳統的前端開發中,頁面之間是少有引數互動的,甚至沒有,而在如今的前端環境下, 一個稍微正式點的專案都不可能少了頁面間傳參,頁面的跨越、伺服器後臺進行資料請求等,都需要一個或多個傳參的方法。 那麼引數在不同的頁面間進行傳遞,一個頁面的引數被另一頁面使用,如何才能做到不同頁面間進行引數傳遞?

Postman介面之間傳遞資料

一、概述     在介面測試的過程中,經常會遇到一個介面的請求引數是另外一個介面的返回資料,比如登入之後獲取token,下一個介面需要這個token去請求,今天就簡單介紹一個介面之前的資料傳遞,介面測試工具為postman。 二、使用方法 1、首先,來新增一個環境變數,

Android Activity間傳遞資料

Intent傳遞簡單的型別 利用Intent傳遞資料 跳轉前的Activity: Intent intent = new Intent(MainActivity.this, ChatActivity