通過Application存取公共數據比如登錄信息等..

来源:http://www.cnblogs.com/ganchuanpu/archive/2017/06/06/6947762.html
-Advertisement-
Play Games

Android系統在運行每一個程式應用的時候,都會創建一個Application對象,用於存儲與整個應用相關的公共變數。一個Android應用只會生成一個Application對象,在不同的Activity中獲取的Application對象是一樣的,所以Application對象是一個單例(Sing ...


Android系統在運行每一個程式應用的時候,都會創建一個Application對象,用於存儲與整個應用相關的公共變數。
一個Android應用只會生成一個Application對象,在不同的Activity中獲取的Application對象是一樣的,所以Application對象是一個單例(SingleTon)。
Application對象非常適合用於存儲一些與整個應用相關數據,例如應用版本,應用登錄賬戶,數據緩存等。
利用Application對象存儲公共數據或數據傳遞
在android開發中,activity的切換是很頻繁的,差不多可以和一個網站中不同網頁之間的切換一樣。那麼不同的activity之間需要存儲公共信息(如只有一個當前登錄用戶)以及數據傳遞等。下麵就是一種利用Application對象存儲登錄用戶信息的方法,可以發現這很方便不同的activity獲取登錄用戶信息

public class MyApplication extends Application {
	 
	 public String appVersion = "v1.0";
	 
	 //當前登錄用戶
	 private User loginUser = new User();
	 
	 public User getLoginUser(){
	  return loginUser;
	 }
	 
	 public void userLogin(User user){
	  loginUser.setUserId(user.getUserId());
	  loginUser.setUserName(user.getUserName());
	 }
	 
	 public void userLogout(){
	  loginUser = new User();
	 }
}

  

public class MainActivity extends Activity {
 
 private MyApplication mApplication;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
	  super.onCreate(savedInstanceState);
	  setContentView(R.layout.activity_main);
	  // 獲取整個應用的Application對象
	  // 在不同的Activity中獲取的對象是同一個
	  mApplication = (MyApplication) getApplication();
  }
 
 /**
  * 一般只有在登錄界面中設置登錄用戶信息,在其他的Activity中
  * 只要通過Application對象就可以獲取登錄用戶信息
  */
  private void login(){
	  User user = new User();
	  user.setUserId(1);
	  user.setUserName("Raysmond");
	  // 將登錄用戶信息保存到Application對象中
	  mApplication.userLogin(user);
  }
}

可以發現通過Application對象,在不同的Activity之間可以方便地實現數據共用。這比在每次切換activity時通過Bundle傳遞數據方便多了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 之前學習中做的筆記,放在有道雲筆記裡面了,分享出來,一起學習啦。 gulp入門篇: http://note.youdao.com/noteshare?id=f0fae7bae57c9deaaa10d2b51c431d75 gulp進階篇: http://note.youdao.com/notesha ...
  • <ul class="ddd"> <li class="solid active">啦啦啦啦</li> <li class="solid">我哦我我</li> <li class="solid">哦哦哦哦</li> <li class="solid">噢噢噢噢</li> <li class="sol ...
  • 1. 2.雙向數據綁定 3.v-if 4.v-show:也是條件渲染指令,和v-if指令不同的是,使用v-show指令的元素始終會被渲染到HTML(但是使用v-if指令的元素如果表達式為假,則不會被渲染到HTML頁面,這裡要註意v-if和v-show的這個區別),它只是簡單地為元素設置CSS的sty ...
  • 作者 | 劉博(又拍雲多媒體開發工程師) 當前為了滿足比較火熱的移動 Web 端直播需求,一系列的 HTML5 直播技術迅速的發展起來。 常見的可用於 HTML5 的直播技術有 HLS、WebSocket 與 WebRTC。今天我向大家介紹WebSocket 與 MSE 相關的技術要點,併在最後通過 ...
  • 之前一直用js的foreach,只是用來迴圈,也不知道它的定義是什麼,知道今天看到一段js, 裡邊用的方式是第一次見到,於是上網一搜。 才知道foreach原來是這樣的 array1.forEach(callbackfn[, thisArg]) 它還有一個可選的參數 具體用法這裡寫的已經很清楚了 看 ...
  • omi cli "omi cli" "omi cli命令" "omi框架" 用戶指南 "文件目錄" "npm 腳本" "npm start" "npm run dist" "代碼分割" "相容 IE8" "插入 CSS" "插入組件局部 CSS" "局部CSS使用圖片" "插入 Less" "插入組 ...
  • 前端感覺寫的比較少,也是為了練手,下午沒事用來寫了這個三級聯動,也是第一次寫這東西。 據我瞭解,城市信息可以選擇存在資料庫或者直接寫在前端,為了省事,我直接寫在前端,下麵是我的代碼: <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional/ ...
  • 關於網路安全加密的介紹可以看之前文章: "1. 網路安全——數據的加密與簽名,RSA介紹" "2. Base64編碼、MD5、SHA1 SHA512、HMAC(SHA1 SHA512)" "3. When I see you again(DES、AES、RSA、Base64、MD5加密原理介紹,代碼 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...