文档章节

android application学习

Bonjourss
 Bonjourss
发布于 2016/05/11 09:16
字数 687
阅读 6
收藏 0
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的生命周期、方法作用讲的比较详细可以看看

本文转载自:http://blog.csdn.net/yan943789510/article/details/43730223

Bonjourss
粉丝 2
博文 37
码字总数 2312
作品 0
虹口
程序员
私信 提问
android apk 防止反编译技术第一篇-加壳技术

做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习。现在将最近学习成果做一下整理总结。学习的这些成果我会...

lonely1986
2015/03/29
42K
40
WP7和Android对比 - 执行模型和生命周期

对于开发过Android应用的WP7开发者来说,有了Android的基础理解Windows Phone应用程序的执行模型和生命周期就变得很轻松了,下面就应用的生命周期做简单的对比: 在Android应用中入口点是App...

鉴客
2012/02/24
360
0
ActivityThread的理解和APP的启动过程

ActivityThread的理解和APP的启动过程 ActivityThread ActivityThread的初始化 主线程Looper的初始化 主线程Handler的初始化 ApplicationThread及Activity的创建和启动 APP的启动 系统的启动...

天王盖地虎626
06/20
15
0
Android进阶3:Activity源码分析(1) —— Activity启动流程(8.0)

关于Activity的源码分析,看了足足有半个月,理由就是: 1:Activity源代码很多,逻辑很复杂 2:下班再能加班学习,礼拜天抽空学习源码 至于为什么看源码:因为偶尔看到一句话:不懂Activit...

天王盖地虎626
06/20
7
0
Android Application的作用

学习android挺长时间了,但是对于Appliction还不是很了解。今天花一些时间研究了一下Application。 What is Application Application和Actovotu,Service一样是android框架的一个系统组件,当...

程序袁_绪龙
2014/10/05
138
1

没有更多内容

加载失败,请刷新页面

加载更多

PHP如何上传文件和下载,你学会了吗?

# 第1章 文件上传 ## 1.1 客户端上传设置 在 B/S 程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录。 网络上常见的支持文...

汤清丽
19分钟前
3
0
.WebApplicationException: null

今天启动eureka server 集群后,启动提供者。出现报错: WebApplicationException: null Cannot execute request on any known server was unable to refresh its cache! status = Retry lim......

颖辉小居
34分钟前
3
0
Jenkins admin 密码忘记解决

一、admin密码未更改情况 1.进入\Jenkins\secrets目录,打开initialAdminPassword文件,复制密码; find / -name initialAdminPassword [root@jenkins jenkins]# cat /var/lib/jenkins/secre......

SuShine
53分钟前
6
0
LiveData原理分析

LiveData原理分析 1 LiveData简介 大部分Android应用会从网络或SQLite数据库存取数据,并根据数据更新界面。为了避免ANR,主线程中不能存取数据。而后台线程中无法更新界面。通常的做法是让后...

tommwq
今天
5
0
Java描述设计模式(20):命令模式

本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景 1、场景描述 智能电脑的品牌越来越多,由此诞生了一款电脑控制的APP,万能遥控器,用户在使用遥控器的时候,可以切换为自家电视的品...

知了一笑
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部