Android全域性變數值之ApplicationContext
第一步:定義全域性變數物件(類),繼承至 android.app.Application ,程式碼如下:
- import android.app.Application;
- publicclass ApplicationHelper extends Application {
- // 操作帳號
- private String logicAccount="";
- // 操作密碼
- private String logicPass="";
- public String getLogicAccount() {
-
return
- }
- publicvoid setLogicAccount(String logicAccount) {
- this.logicAccount = logicAccount;
- }
- public String getLogicPass() {
- return logicPass;
- }
- publicvoid setLogicPass(String logicPass) {
- this.logicPass = logicPass;
-
}
- }
第二步:給全域性變數賦值,程式碼如下:
- ((ApplicationHelper)getApplicationContext()).setLogicAccount( name.getText().toString());
- ((ApplicationHelper)getApplicationContext()).setLogicPass(pwd.getText().toString());
第三步:把全域性變數類註冊到 AndroidManifest.xml檔案中去:
- <application
-
android:name=".ApplicationHelper"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <!--應用程式的其他Activity註冊內容-->
- </application>
第四步:獲取全域性變數值,程式碼如下:
- String userAccount= ((ApplicationHelper)getApplicationContext()).getLogicAccount() ;
- String userPass= ((ApplicationHelper)getApplicationContext()).getLogicPass();
- System.out.println(userAccount);
- System.out.println(userPass);
注意問題:
1.無論是給全域性變數賦值還是取值必須 使用 (ApplicationHelper)getApplicationContext() 物件,不可以使用 ApplicationHelper aHelper= (ApplicationHelper)getApplicationContext() , 因為 每 使用一次 ApplicationHelper aHelper 就是新建立一個物件,每次都是新物件,變數的值就不能共享,也就失去全域性變數存在意義。
2.把全域性變數註冊到AndroidManifest.xml 時應該注意,一定要把 全域性變數物件類(ApplicationHelper)定義到要使用全域性變數的應用(application)中,如果給全域性變數賦值 和註冊全域性變數類不在同一個應用中,無法共享全域性變數值。
3. Application全域性變數取值時,最好在onCreate方法中去,不然會引發空指標異常問題(這部分為後期開發遇到問題,屬性名稱和方法名稱和以前不一致,不過不影響大家學習)
錯誤程式碼:
- private String estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();
- private String user_name=((ApplicationHelper)getApplicationContext()).getUser_name();
會引發空指標異常
正確程式碼:
- private String estination_code="";
- private String user_name="";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_challenge);
- estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();
- user_name=((ApplicationHelper)getApplicationContext()).getUser_name();
- }
相關推薦
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開發NDK之Gradle的配置(能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新啟動的線程訪