Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ---Application 開發中共享全局數據

Android ---Application 開發中共享全局數據

編輯:關於Android編程

android 開發中共享全局數據  我們在平時的開發中,有時候可能會需要一些全局數據,來讓應用中的所有Activity和View都能訪問到,大家在遇到這種情況時,可能首先會想到自己定義一個類,然後創建很多靜態成員,不過android已經為我們提供了這種情況的解決方案,下面就來介紹一下:        在Android中,有一個名為Application的類,我們可以在Activity中使用getApplication(),方法來獲得,它是代表我們的應用程序的類,使用它可以獲得當前應用的主題,資源文件中的內容等,這個類更靈活的一個特性就是可以被我們繼承,來添加我們自己的全局屬性。例如我們在開發一個游戲應用,需要保存分數,那麼我們就可以繼承Application,代碼如下: 1 public class GameApplication extends Application {    2     private int score;    3         4     public int getScore() {    5         return score;    6     }    7     public void setScore(int score) {    8         this.score = score;    9     }   10 }   這樣我們就擴展了自己的屬性,不過還沒有結束,另外一個比較關鍵的一步,是需要在androidManifest.xml文件中將我們擴展後的Application類指定上去,例如下面的代碼:   1 <application   2 android:name=".GameApplication"    3 android:icon="@drawable/icon"    4 android:label="@string/app_name">   這樣指定好之後,我們的自定義Application就算完成了,然後我們可以很方便的在任何Activity和View中來獲取我們的分數屬性,代碼如下:   在Activity中: 1 //設置分數    2 ((GameApplication)getApplication()).setScore(100)   3    4 //獲取分數    5 ((GameApplication)getApplication()).getScore();   在View中: 1 ((GameApplication)getContext().getApplicationContext()).getScore()    注: 在使用這種方式的時候可能會遇到getApplication返回null的情況,有可能是調用getApplication的時機不對,如果是在類未定義完成的地方(比如變量定義部分),此時無法得到實例,所以就會出現空指針.           Appliction一些屬性:    
<application>  
   
    <application android:allowClearUserData=["true" | "false"]  
             android:allowTaskReparenting=["true" | "false"]  
             android:backupAgent="string"  
             android:debuggable=["true" | "false"]  
             android:description="string resource"  
             android:enabled=["true" | "false"]  
             android:hasCode=["true" | "false"]  
             android:icon="drawable resource"  
             android:killAfterRestore=["true" | "false"]  
             android:label="string resource"  
             android:manageSpaceActivity="string"  
             android:name="string"  
             android:permission="string"  
             android:persistent=["true" | "false"]  
             android:process="string"  
             android:restoreAnyVersion=["true" | "false"]  
             android:taskAffinity="string"  
             android:theme="resource or theme" >  
        . . .  
    </application>  

 

     包含在:<manifest>元素下      可以包含:        <activity>   <activity-alias>   <service>   <receiver>   <provider>   <uses-library>       描述:    應用的聲明。這個元素包含了子元素,這些子元素聲明了應用的組件,元素的屬性將會影響應用下的所有組件。很多屬性為組件設置了默認    值。有些屬性設置了全局值並且不能被組件修改。   屬性:     1、android:allowClearUserData         是否給以用戶刪除用戶數據的權限,如果為true應用管理者就擁有清除數據的權限;false沒有。默認為true。     2、android:allowTaskReparenting         應用定義的activities是否可以被從啟動的任務轉移到和他有相同並且將被帶到前台的任務。true他們可以被轉移,如果為false,     他們必須和啟動他們的任務保持在一起。默認為false。     3、android:backupAgent         實現應用的備份代理的類名,BackupAgent的子類。這個屬性的名稱因該是全限定類名(如,"com.example.project.MyBackupAgent")。     但是,如果名稱的首字母被設置為點號,也可以為類名(如,".MyBackupAgent"),他將被追加到在<manifest>元素中定義的包名後。         沒有默認值。     4、android:debuggable          應用是否可以使用debug,甚至運行在用戶模式下。true可以,false不能。默認為false。     5、android:description          用戶可讀的,比應用標簽更長、更多的應用描述。此值必須是一個引用字符串。不像標簽,他不能被設置為硬編碼字符串。沒有默認值。     6、android:enabled          Android系統是否可以實例化應用的組件。如果為true可以,如果為false不可以。如果為true時,每個組件的enabled屬性決定了此組件   是否可用。如果為false,他重寫了組件指定值,所有的組件將不還用。默認為true。     7、android:hasCode          應用是否包含代碼。true表示包含,false表示不包含。當值為false時,在啟動組件是系統不會試著加載應用的任何代碼。默認為true。     8、android:icon          整個應用的圖標,還是每個組件的默認圖標。這個屬性值必須被設置為drawable資源的引用。沒有默認值。     9、android:killAfterRestore          在整型系統重置操作中,當他的設置被重置後,應用是否應該被終止。單個包的重置操作不會引起應用被關閉。整個系統的恢復操作僅代表   性的發生一次,當電話第一次被設置時。第三方應用將不會經常使用此屬性。   默認值為true,意思是,當整個系統被恢復時,應用運行玩他的數據後,將會終止。     10、android:label          一個易讀的應用標簽,並且還是應用的每個組件的默認標簽。這個標簽應該被設置為引用字符串資源,當然他也可以像其他字符串一樣在用戶   接口中指定。但是為了方便,在應用開發時,可以被設置未定義字符串。     11、android:manageSpaceActivity          一個Activity子類的全限定名稱,這個Activity可以被系統啟動讓用戶管理此應用占有的存儲空間。這個Activity也應該用<activity>元素聲明。     12、android:name          為這個應用實現的Application子類的全限定名稱。當應用啟動時,這個類將在應用的其他組件之前被實例化。   這個子類是可選的;大多數應用不需要。在缺省時,Android使用基本Application類的實例。     13、android:permission          客戶為了和應用交互必須設置的許可的名稱。這個屬性是一個便利的途徑為應用的組件設置許可。他可以被組件的permission屬性重寫。     14、android:persistent          應用是否在所有時間下都保持運行。true是,false不是。默認為false。通常情況下應用不應該設置此標識。持久模式僅僅被幾個系統應用指定。     15、android:process          為應用下的組件定一個運行進程名稱。每個組件可以定義自己的進程名稱通過設置自己的process屬性。   在默認情況下,Android為應用創建一個進程,當應用的第一個組件需要運行時。所有的組件在同一個進程下運行。這個進程的名稱和在<manifest>   元素設置的backage屬性名相同。   通過設置這個屬性在可以在其他應用中共享,你可以協調應用的組件在同一個進程中運行,但是只有兩應用也共享用戶ID和簽訂相同的證書。   如果這個屬性的名稱一個冒號(":")開始,一個新的私有的進程將被創建。如果一個進程的名稱以小寫字母開頭,一個公共的進程將被創建。   一個公共的進程可以被其他應用共享,來減少資源的使用。     16、android:restoreAnyVersion          表明這個應用准備嘗試恢復所有的備份數據集合,甚至如果備份數據是比當前安裝的應用高的編號存儲的。設置為true將允許備份管理者去嘗試   恢復當版本不匹配,意思是數據沖突。要小心使用。默認為false。     17、android:taskAffinity          提供給應用下所有組件的類同名稱,除了設置了自己的taskAffinity屬性的組件。默認情況下所有的組件使用相同的affinity。Affinity的名稱   和在<manifest>元素中設置的包名相同。     18、android:theme          為應用下的組件定義一個引用自樣式資源的主題。個別的activities可以設置自己的主題,通過設置自己的theme屬性。                
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved