android application學習

Application 是Android的一個組件,就像Activity一樣,有生命週期。Application的生命週期比Activity生命週期長。他從程序開始運行時被創建,程序被殺死的時候銷燬。運行項目的時候Android會爲每個程序Application。創建項目的時候系統會爲我們自動創建Application。我們也可以自己創建MyApplication例如:
1、創建MyApplication繼承Application
</pre><pre name="code" class="html"><span style="font-size:14px;">package com.mini;

import java.util.ArrayList;
import java.util.List;

import com.mini.bean.Music;

import android.app.Application;
import android.database.Cursor;
import android.provider.MediaStore;

public class MyApplication extends Application{

 private List<Music> musiclist;
 @Override
 public void onCreate() {
 //重寫onCreate方法,創建自己Application,初始化全局變量

  super.onCreate();
  searchMusicONPhone();
 }

 /**
  * 查找手機上所有歌曲
  */
 private void searchMusicONPhone(){
  
  Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
    null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
  musiclist = new ArrayList<Music>();
  if(cursor == null || cursor.getCount() <= 0){
   setMusiclist(musiclist);
  }else{
   while(cursor.moveToNext()){
    Music music = new Music();
    music.setId(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID))); //歌曲ID
    music.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));//歌曲的名稱
    music.setAlbum(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM))); //歌曲的專輯名
    music.setArtists(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST))); //歌曲的歌手名
    music.setTimes(toTime(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))));//歌曲的總播放時長
    music.setPath(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)));//歌曲文件的路徑
    music.setSize(cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE)));//歌曲文件的大小
    musiclist.add(music);
   }
   setMusiclist(musiclist);
  }
  if(cursor != null){
   cursor.close();
   cursor = null;
  }

 }

 public List<Music> getMusiclist() {
  return musiclist;
 }

 public void setMusiclist(List<Music> musiclist) {
  this.musiclist = musiclist;
 }
 
 /**
  * 時間的轉換
  */
 public String toTime(int time) {

  time /= 1000;
  int minute = time / 60;
  int second = time % 60;
  minute %= 60;
  /** 返回結果用string的format方法把時間轉換成字符類型 **/
  return String.format("%02d:%02d", minute, second);
 }
}</span>
在Application中實例化過的變量是隨着app的啓動而創建,app銷燬時被銷燬。所以當我們需要創建全局變量的時候,不需 要再像j2se那樣需要創建public權限的static變量,而直接在Application中去實現。只需要調用Context的getApplicationContext或者Activity的getApplication方法來獲得一個Application對象,再做出相應的處理。例如:
在剛剛的MyApplication中初始化了musiclist這個全局變量,在Activity中我們可以通過以下方式來獲取musiclist變量的值:
mApplication = (MyApplication)getApplication();


2、在AndroidManifest.xml文件的<application>標籤中註冊自定義MyApplication。例如:

   <application
        android:name=".MyApplication"
        android:icon="@drawable/scon"    //引入應用在桌面顯示的圖標
        android:label="@string/app_name" //類似於titlebar,可以設置不讓他顯示
        android:theme="@style/AppTheme" >

        <activity
            android:name=".activity.LuncherActivity"
            android:icon="@drawable/scon"  
            android:label="@string/app_name" 
            android:theme="@style/AppStartLoad" 
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application >


不顯示lable標籤的設置方法:在<application >標籤中添加 android:theme="@android:style/Theme.NoTitleBar"

學習網址:http://blog.csdn.net/pi9nc/article/details/11200969 Application的生命週期、方法作用講的比較詳細可以看看


不顯示lable標籤的設置方法:在<application >標籤中添加 android:theme="@android:style/Theme.NoTitleBar"

學習網址:http://blog.csdn.net/pi9nc/article/details/11200969 Application的生命週期、方法作用講的比較詳細可以看看
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章