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