使用application传递全局变量

本文详细介绍了Android开发中Application组件的作用及其使用方法。包括如何创建和注册Application类、全局变量的初始化与共享、以及Application对象的生命周期等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、有关application的说明
(1)Application和Activity,Service一样是Android框架的系统组件,当Android程序启动时系统创建一个Application对象,用来存储系统的一些信息。Android系统自动回位每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例模式的一个类。
(2)通常我们不需要指定一个application的,系统会自动帮我们创建,如果我们需要自己创建一个Application,只需要创建一个类继承Application并且在AndroidMainfest.xml文件中的application标签中进行注册(在application标签添加name属性,并且添加自己Application的名字就可以)
(3)启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
(4)Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。

2、应用实例
MainActivity

package com.example.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {
    private MyApp myApp;
    private String log;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myApp=(MyApp) getApplication();
        Log.i(log,"修改前的value"+myApp.getValue());
        myApp.setValue("hello");
        Log.i(log,"修改后的value"+myApp.getValue());
        Intent intent=new Intent(this,SecondActivity.class);
        startActivity(intent);
    }     
}

SecondActivity

package com.example.test;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class SecondActivity extends Activity {
    private MyApp myApp;
    private String log;
    @Override 
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        myApp=(MyApp)getApplication();
        Log.i(log,"调用secondActivity查看"+myApp.getValue());
    }
}

MyApp

package com.example.test;

import android.app.Application;

public class MyApp extends Application{
    private String str="VALUE";
    private String value;
    @Override
    public void onCreate(){
        super.onCreate();
        setValue(str);
    }
    public void setValue(String value) {
        // TODO Auto-generated method stub
        this.value=value;
    }
    public String getValue(){
        return value;       
    }
}

AndroidMainfest.xml

<!--添加了name属性-->
  <application
        android:name="MyApp"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test.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>
        <activity
            android:name=".SecondActivity"></activity>
    </application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值