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的生命周期、方法作用讲的比较详细可以看看
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章