Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android——Application全局變量應用

Android——Application全局變量應用

編輯:關於Android編程

 最近寫的一個apk需要在多個activity之間操作使用同一數據,使用intent 以及broadcast都沒有application來的方便! Application類是一個基類,生命周期最長,我們可以繼承這個類,重寫一些需要用的方法,創建一些數據,那麼在Application啟動的時候,就會實例化你重寫的這個類! 在這個應用程序中的所有activity都可以通過getApplication()獲取實例,進行操作。 我重寫的一個用來保存全局vector的application,可以在多個activity中對bookdata進行操作! [java]  public class Mapplication extends Application   {       private static final String TAG = "Mapplication";       private Vector<Book>bookdata=new Vector<Book>();              public void onCreate()       {           super.onCreate();           bookdata.clear();           /*data init*/          Log.d(TAG, "application create");       }              public int getbookcount()       {           return bookdata.size();       }              public Vector <Book> getbookdata()       {           return bookdata;       }              public void setbookdata(Vector<Book> bookdata)       {           this.bookdata.clear();           this.bookdata.addAll(bookdata);       }       public boolean addbook(Book book)       {           String addbookname=book.bookname;           for(int i=0;i<bookdata.size();i++)           {               if(bookdata.get(i).bookname.equals(addbookname))                   return false;           }           bookdata.add(book);           return true;       }     在 AndroidManifest.xml中的Application中聲明  android:name=“Mapplication” [html]   <application         android:name="Mapplication"         android:allowBackup="true"         android:icon="@drawable/ic_launcher"         android:label="@string/app_name"        android:theme="@style/AppTheme"  >         <activity              android:name="com.jscese.moonread.MoonMainActivity"             android:label="@string/app_name"             android:theme="@style/MoonTheme.NoTitleBar" >             <intent-filter>                    <action  android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER"  />                                           </intent-filter>           </activity>     尤為注意的一點:Mapplication.java必須要和主activity在同一個包裡面!也就是你的應用程序的主包下!不然就報錯: [html]  ActivityThread.handleBindApplication(ActivityThread$AppBindData) line: 4400       在任何一個activity中都可以通過(Mapplication)getApplication()獲取實例對象: [java]  public void init()       {           mapplication=(Mapplication) getApplication();           bookshelf=mapplication.getbookdata();           if(mapplication.getbookcount()==0)               withoutbook=true;       }   @Override   protected void onCreate(Bundle savedInstanceState)   {       super.onCreate(savedInstanceState);       setContentView(R.layout.moonmain);       init();       findview();       setlistener();   }     這樣就可以在多個activity中對同一數據進行維護,也可以變相的實現通信。 如果想要進行其它的通信操作,比如更新UI什麼的,可以通過Mapplication實例傳遞主線程activity的handler引用!在另外的activity中通過實例獲取handler引用然後就可以handler.sendMessage(msg); 達到在主線程handler message 更新UI或者其它操作!這樣還是比較方便的。    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved