1. 程式人生 > >Android全域性變數值之ApplicationContext

Android全域性變數值之ApplicationContext

第一步:定義全域性變數物件(類),繼承至 android.app.Application ,程式碼如下:

  1. import android.app.Application;  
  2. publicclass ApplicationHelper extends Application {  
  3.         // 操作帳號   
  4.     private  String  logicAccount="";  
  5.         // 操作密碼    
  6.      private  String  logicPass="";  
  7.     public String getLogicAccount() {  
  8.         return
     logicAccount;  
  9.     }  
  10.     publicvoid setLogicAccount(String logicAccount) {  
  11.         this.logicAccount = logicAccount;  
  12.     }  
  13.     public String getLogicPass() {  
  14.         return logicPass;  
  15.     }  
  16.     publicvoid setLogicPass(String logicPass) {  
  17.         this.logicPass = logicPass;  
  18.     }  
  19. }  


第二步:給全域性變數賦值,程式碼如下:

  1. ((ApplicationHelper)getApplicationContext()).setLogicAccount( name.getText().toString());  
  2. ((ApplicationHelper)getApplicationContext()).setLogicPass(pwd.getText().toString());  


第三步:把全域性變數類註冊到 AndroidManifest.xml檔案中去:

  1. <application         
  2. android:name=".ApplicationHelper"
  3. android:icon="@drawable/ic_launcher"
  4. android:label="@string/app_name"
  5. android:theme="@style/AppTheme" >  
  6. <!--應用程式的其他Activity註冊內容-->      
  7. </application>   


第四步:獲取全域性變數值,程式碼如下:

  1. String userAccount= ((ApplicationHelper)getApplicationContext()).getLogicAccount() ;  
  2. String userPass= ((ApplicationHelper)getApplicationContext()).getLogicPass();  
  3. System.out.println(userAccount);  
  4. System.out.println(userPass);   

注意問題:

1.無論是給全域性變數賦值還是取值必須 使用 (ApplicationHelper)getApplicationContext() 物件,不可以使用  ApplicationHelper  aHelper=  (ApplicationHelper)getApplicationContext() , 因為 每 使用一次 ApplicationHelper  aHelper 就是新建立一個物件,每次都是新物件,變數的值就不能共享,也就失去全域性變數存在意義。

2.把全域性變數註冊到AndroidManifest.xml 時應該注意,一定要把 全域性變數物件類(ApplicationHelper)定義到要使用全域性變數的應用(application)中,如果給全域性變數賦值 和註冊全域性變數類不在同一個應用中,無法共享全域性變數值。

3. Application全域性變數取值時,最好在onCreate方法中去,不然會引發空指標異常問題(這部分為後期開發遇到問題,屬性名稱和方法名稱和以前不一致,不過不影響大家學習)

錯誤程式碼:

  1. private  String  estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();  
  2. private  String user_name=((ApplicationHelper)getApplicationContext()).getUser_name();  


會引發空指標異常


正確程式碼:

  1. private  String  estination_code="";  
  2. private  String  user_name="";  
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_challenge);  
  7.         estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();  
  8.         user_name=((ApplicationHelper)getApplicationContext()).getUser_name();  
  9.     }  

相關推薦

Android全域性數值ApplicationContext

第一步:定義全域性變數物件(類),繼承至 android.app.Application ,程式碼如下: import android.app.Application;   publicclass ApplicationHelper extends Applicat

Android 全域性異常捕獲CrashHandler

一個App上線或者投入到生產環境的時候崩潰了,還不知道是什麼原因,這肯定是開發者的痛...所以肯定要加入全域性異常捕獲,如果專案較大的話,可以考慮加入第三方諸如友盟的崩潰統計外掛,以達到異常捕獲的效果! Crash,可以理解為崩潰、垮臺,通常來講就是App執行期間發生了不可

Android配置build.gradle的buildTypes動態自動維護debug和release包自定義欄位數值

Android配置build.gradle的buildTypes動態自動維護debug和release包自定義欄位變數值 在Android編譯出包階段,debug包和正式的release有時候需要作出有所區別的調整。 比如最常見的是App應用程式中Log日誌輸出開關的控制。開發者希望在deb

為何Android開發中不推薦使用static全域性數傳參

  原文連結 Android開發中一般都是使用Intent給Activity傳參。有時需要傳複雜物件時,我們會傾向於用全域性變數(靜態變數或Application屬性)。但其實這樣做是有隱患的,跟Activity的生命週期有關,正好最近遇到這個問題,在這裡寫一下。 大概情

Android學習(5)——靜態數傳值,全域性數傳值以及由A-B-A的傳值

今天繼續學習了Activity之間的傳值方式。 接上一次的學習內容,上一次介紹的是Intent 意圖物件的傳值方式,下面來介紹其他的三種方式 靜態變數 A類中,宣告一個公共的靜態成員,在合適的地方存入

Android Studio除錯時無法watch區域性數值

在Android Studio中下斷點除錯時,可以在“Watches”視窗中檢視變數的。但是當要檢視的變數是區域性變數時,String path = getFilesDir().toString();在

SpringBoot@ConfigurationProperties自動注入成員數值功能原始碼解析

前言:     我們在使用SpringBoot開發相關專案時,經常會使用到@ConfigurationProperties註解,這個註解配合application.properties(或yml檔案)使用,可以快速的為我們的Bean的成員變數進行賦值,常規用法如下: //

為何Android開發中不推薦使用全域性數傳參

Android開發中一般都是使用Intent給Activity傳參。有時需要傳複雜物件時,我們會傾向於用全域性變數(靜態變數或Application屬性)。但其實這樣做是有隱患的,跟Activity的生命週期有關,正好最近遇到這個問題,在這裡寫一下。 大概情況是這樣的:A

Android 動畫進階動畫切換

ram 屏幕 pre 退出 tac 旋轉動畫 utf 轉動 XML 一、Activity切換動畫   在Android開發中,經常會遇到Activity之間切換效果,下面介紹一下,Activity左右滑動切換效果。在Android2.0以後版本,在Activity中添加了

linux的shell美元符號

linux 雙引號 linux中shell變量$#,$@,$0,$1,$2的含義解釋 摘抄自:ABS_GUIDElinux中shell變量$#,$@,$0,$1,$2的含義解釋: 變量說明: $$ Shell本身的PID(ProcessID) $! Shell最後運行的後臺Process的PID

Android UI布局TableLayout

you column true xmlns art parent 名稱 str demo 從字面上了解TableLayout是一種表格式的布局。這樣的布局會把包括的元素以行和列的形式進行排列。表格的列數為每一行的最大列數。當然表格裏邊的單元格是能夠為空的。 實例:La

Android性能優化ListView緩存機制

ner data b2c 模式 ret hold ren state err 要想優化ListView首先要了解它的工作原理,列表的顯示須要三個元素:ListView、Adapter、顯示的數據。 這裏的Adapter就是用到了適配器模式,無論傳入的是什麽View在Li

Android圖像處理Bitmap類

out creat 功能 create 選項 操作 upload true graph Bitmap是Android系統中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進行圖像剪切、旋轉、縮放等操作,並可以指定格式保存圖像文件。本文從應用的角度,著重介紹怎麽用Bitm

android 自動化測試案例 MonkeyScript

時間 運行 nbsp speed sources patch html 搜索功能 net #文件名 MonkeyScript.mks #功能: 使用monkey script測試app,此案例是測試搜索功能(輸入關鍵字,然後點擊搜索按鈕)#參考: http://blog.

Android Studio插件sexy editor(設置AS背景)

roi spa develop ica all 透明度 eve blog andro 好多剛開始用Android Studio 的同學。看到這麽炫的效果,肯定自己很想嘗試設置一下,可是這個效果不是android Studio開發工具中 原生的功能,須要下載

Android業務組件化Gradle和Sonatype Nexus搭建私有maven倉庫

Android 前言: 公司的業務組件化推進的已經差不多三四個月的時間了,各個業務組件之間的解耦工作已經基本完成,各個業務組件以module的形式存在項目中,然後項目依賴本地的module,多少有點不太利於項目的並行開發維護了,本質原因就是如果是依賴本地的,必須要將依賴

Android性能優化利用Rxlifecycle解決RxJava內存泄漏

Android 前言: 其實RxJava引起的內存泄漏是我無意中發現了,本來是想了解Retrofit與RxJava相結合中是如何通過適配器模式解決的,結果卻發現了RxJava是會引起內存泄漏的,所有想著查找一下資料學習一下如何解決RxJava引起的內存泄漏,就查到了利用Rx

使用Android Studo開發NDKGradle的配置(能debug C代碼)

lose service ng- services lba new import dev android 配置: 用的版本號是AS1.5(也能夠嘗試更高版本號)。 Gradle地址是distributionUrl=https\://services.gradle.org

Android四大組件service

service 活動綁定服務並在活動裏調用服務的方法。 如果直接在活動裏new了一個服務的對象,是不能調用服務的方法的,因為這個時候服務還沒有啟動,這個時候需要在activity裏調用bindService方法,使activity與服務綁定,綁定服務後,會自動調用服務裏的OnBind()方

Android--多線程Handler

start ref star andro 關於 listen 改變 toolbar 對象 前言   Android的消息傳遞機制是另外一種形式的“事件處理”,這種機制主要是為了解決Android應用中多線程的問題,在Android中不允許Activity新啟動的線程訪