首页 > 编程知识 正文

application对象作用是什么,application对象的类和接口

时间:2023-05-05 10:15:29 阅读:120680 作者:3482

Application类

与Activity和Service一样,APP是Android框架的系统组件,在启动Android程序时会创建一个包含系统信息的APP对象。

在Android系统中,每次运行程序时只会自动创建一个APP应用程序类对象,因此APP应用程序可以说是“单实例”(singleton )模式的类。

通常,不需要指定APP。 系统会自动创建。 如果需要创建自己的APP,那也很简单。 创建类继承应用程序并将其注册到AndroidManifest.xml文件中的应用程序标记中。 只需向Application标记中添加名称属性,然后添加自己的Application名称即可。

启动APP时,将创建PID (即进程ID ),并在此进程中执行所有活动。 在创建APP时初始化全局变量,并允许同一APP应用程序中的所有Activity获取这些全局变量的值。 换句话说,如果在一个Activity中更改这些全局变量的值,则该值将在同一APP应用程序的其他Activity中更改。

整个程序中,APP的生命周期最长,其生命周期与程序的生命周期相同。 因为这是全局的单个实例,所以在不同的活动和服务中检索的所有对象都是相同的对象。 因此,可以在APP上进行数据传输、数据共享、数据缓存等操作。

应用场景:

在Android中,要实现APP应用程序级别的全局变量,请继承比静态类更安全的全局变量方法,直到destory放弃了APP应用程序的所有Activity。

实现步骤:

1、继承Application

publicclasscustomapplicationextendsapplication { privatestaticfinalstringvalue=' Harvey '; 隐私字符串va

lue; @Override public void onCreate() { super.onCreate(); setValue(VALUE); // 初始化全局变量 } public void setValue(String value) { this.value = value; } public String getValue() { return value; }}

注:继承Application类,主要重写里面的onCreate()方法(android.app.Application包的onCreate()才是真正的Android程序的入口点),就是创建的时候,初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。

2、在ApplicationManifest.xml文件中配置自定义的Application

<application android:name="CustomApplication"></application>

实例代码:

CustomApplication.java

/** * 继承Application * * @author admin * */public class CustomApplication extends Application{ private static final String VALUE = "Harvey"; private String value; @Override public void onCreate() { super.onCreate(); setValue(VALUE); // 初始化全局变量 } public void setValue(String value) { this.value = value; } public String getValue() { return value; }}

FirstActivity.java

public class FirstActivity extends Activity{ private CustomApplication app; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); app = (CustomApplication) getApplication(); // 获得CustomApplication对象 Log.i("FirstActivity", "初始值=====" + app.getValue()); // 获取进程中的全局变量值,看是否是初始化值 app.setValue("Harvey Ren"); // 重新设置值 Log.i("FirstActivity", "修改后=====" + app.getValue()); // 再次获取进程中的全局变量值,看是否被修改 Intent intent = new Intent(); intent.setClass(this, SecondActivity.class); startActivity(intent); }}

注:只需要调用Context的 getApplicationContext或者Activity的getApplication方法来获得一个Application对象,然后再得到相应的成员变量即可。它是代表我们的应用程序的类,使用它可以获得当前应用的主题和资源文件中的内容等,这个类更灵活的一个特性就是可以被我们继承,来添加我们自己的全局属性。

SecondActivity.java

public class SecondActivity extends Activity{ private CustomApplication app; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); app = (CustomApplication) getApplication(); // 获取应用程序 Log.i("SecondActivity", "当前值=====" + app.getValue()); // 获取全局值 }}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name" android:name="CustomApplication"> <!-- 将我们以前一直用的默认Application设置成自定义的CustomApplication --> <activity android:name=".FirstActivity" 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" android:label="@string/app_name"> </activity> </application></manifest>

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。