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的生命周期、方法作用讲的比较详细可以看看