当前位置:首页>优优资讯 > 软件教程 > 电脑软件教程 > Android开发:Application收集

Android开发:Application收集

作者:本站整理 时间:2016-04-21

欢迎来到优优下载站的编程开发专栏,今天为大家带来的是Android开发开发的Android开发文章,希望对您有帮助。除了这篇文章外,本站还有许多不同类型的文章供大家阅读,只要你输入关键字,再点击搜索。闲话不多说,一起来看看今天的内容吧!

     先定义一个Application
package com.xesam;

import android.app.Application;
import android.content.res.Configuration;
import android.util.Log;

public class ApplicationActivity extends Application {
    static String name = "小西山子";
    @Override
    public void onCreate() {
        Log.v("ApplicationActivity","onCreate");
        super.onCreate();
    }
    @Override
    public void onTerminate() {
        Log.v("ApplicationActivity","onTerminate");
        super.onTerminate();
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        Log.v("ApplicationActivity","onConfigurationChanged");
        super.onConfigurationChanged(newConfig);
    }
    @Override
    public void onLowMemory() {
        Log.v("ApplicationActivity","onLowMemory");
        super.onLowMemory();
    }
}
 

主要Activity:

package com.xesam;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.v("MainActivity","onCreate");
        super.onCreate(savedInstanceState);
        
        ApplicationActivity app = (ApplicationActivity)this.getApplication();
        
        LinearLayout main = new LinearLayout(this);
        main.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
        main.setOrientation(LinearLayout.VERTICAL);
        TextView tv = new TextView(this);
        tv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
        tv.setText(app.name);
        tv.setTextColor(Color.BLUE);
        main.addView(tv);
        setContentView(main);
    }
    @Override
    public void onDestroy(){
        Log.v("MainActivity","onDestroy");
        super.onDestroy();
        //System.exit(0);
    }
}
 

AndroidManifest.xml:
 

 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xesam"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" 
        android:name="ApplicationActivity">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>
 

这里我们自定义了一个Application,所以必须指定AndroidManifest.xml中application的android:name属性(默认是android.app.Application)。

输出结果:

"ApplicationActivity","onCreate"
"MainActivity","onCreate"
"MainActivity","小西山子"
"ApplicationActivity","onConfigurationChanged"

退出之后打印结果:

"MainActivity","onDestroy"

从模拟器再次开启应用(没有再次编译)之后,打印结果

"MainActivity","onCreate"
"MainActivity","小西山子"

所以后退的时候并没有关闭application,要强制关闭application,可以在MainActivity的onDestroy中调用System.exit(0)

    @Override
    public void onDestroy(){
        Log.v("MainActivity","onDestroy");
        super.onDestroy();
        System.exit(0);
    }

这样就完全退出程序了。

 

回到application的问题上来,显然,application的onCreate在activity的onCreate之前执行了,所以整个应用的最初入口是这个方法。

onCreate作用说明:

 
    /**
     * Called when the application is starting, before any other application
     * objects have been created.  Implementations should be as quick as
     * possible (for example using lazy initialization of state) since the time
     * spent in this function directly impacts the performance of starting the
     * first activity, service, or receiver in a process.
     * If you override this method, be sure to call super.onCreate().
     */
 

可以认为Activity,service以及其他的组件共同构成了一个application的环境,因此application中可以共享或者初始化一些全局变量,比如地图(百度地图demo就是这么做的

注:eclipse查看源码的方法:

下载android版本对应的源码【2.2版本地址:http://rgruet.free.fr/public/android-2.2-froyo-src.zip

解压缩到 /usr/local/android-sdk-linux/platforms/android-8下,然后修改同目录下source.properties文件中的Pkg.SourceUrl为刚才解压的源码目录就行了

一个示例(我下载的源码放在/usr/local/android-sdk-linux/platforms/android-8/source目录中,所以Pkg.SourceUrl=sources):

 
### Android Tool: Source of this archive.
#Mon Apr 23 01:14:48 CST 2012
Layoutlib.Api=4
Layoutlib.Revision=0
Pkg.Desc=Android SDK Platform 2.2_r3
Archive.Arch=ANY
Platform.Version=2.2
Pkg.DescUrl=http\://developer.android.com/sdk/
Platform.MinToolsRev=8
Archive.Os=ANY
Pkg.SourceUrl=sources
Pkg.Revision=3
AndroidVersion.ApiLevel=8
今天的文章到此结束,想要了解更多、更全面的编程开发技巧,请持续关注本站。
除了文章外,本站还拥有着许多不同类型的优质手机软件,大家都可以进行免费下载安装,相信本站定会为大家带来完美的下载体验!【优优软件下载站】
 

相关文章

相关推荐

最新攻略

用户评论

(已有0条评论)
表情
注:您的评论需要经过审核才能显示哦,请文明发言!
还没有评论,快来抢沙发吧!