室内设计软件大全网站,网站建设与维护试题a卷,营销软文是什么意思,海尔网站建设的基本情况一、Application简介 Application和Activity#xff0c;Service一样是Android框架的一个系统组件#xff0c;当Android程序启动时系统会创建一个Application对象#xff0c;用来存储系统的一些信息。 Android系统自动会为每个程序运行时创建一个Application类的对象且只创建…一、Application简介 Application和ActivityService一样是Android框架的一个系统组件当Android程序启动时系统会创建一个Application对象用来存储系统的一些信息。 Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个所以Application可以说是单例singleton模式的一个类。 通常我们是不需要指定一个Application的系统会自动帮我们创建如果需要创建自己的Application那也很简单创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册只需要给application标签增加name属性并添加自己的 Application的名字即可。 启动Application时系统会创建一个PID即进程ID所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量同一个应用的所有Activity都可以取到这些全局变量的值换句话说我们在某一个Activity中改变了这些全局变量的值那么在同一个应用的其他Activity中值就会改变。 Application对象的生命周期是整个程序中最长的它的生命周期就等于这个程序的生命周期即等于Android App的生命周期。因为它是全局的单例的所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些如数据传递、数据共享和数据缓存等操作。 二、应用场景 在Android中可以通过继承Application类来实现应用程序级的全局变量这种全局变量方法相对静态类更有保障直到应用的所有Activity全部被destory掉之后才会被释放掉。 三、实现步骤
3.1、继承Application
public class MyApplication extends Application
{private static final String VALUE Harvey;private String value;Overridepublic 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程序的入口点就是创建的时候初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。 3.2、配置ApplicationManifest.xml
applicationandroid:nameMyApplication
/application四、Application的生命周期 1、onCreate 程序创建的时候执行 2、onTerminate 程序终止的时候执行 在模拟环境下执行。当终止应用程序对象时调用不保证一定被调用当程序是被内核终止以便为其他应用程序释放资源那么将不会提醒并且不调用应用程序Application对象的onTerminate方法而直接终止进程。 3、onLowMemory 低内存的时候执行 好的应用程序一般会在这个方法里面释放一些不必要的资源来应付当后台程序已经终止前台应用程序内存还不够时的情况。 4、onConfigurationChangedConfiguration newConfig 配置改变时触发这个方法。 5、onTrimMemoryint level程序在进行内存清理时执行 五、代码实现
MyApplication.java
/*** 继承Application*/
public class MyApplication extends Application
{private static final String VALUE Harvey;private String value;Overridepublic 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 MyApplication app;Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);app (MyApplication) getApplication(); // 获得MyApplication对象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 MyApplication app;Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);app (MyApplication) getApplication(); // 获取应用程序 Log.i(SecondActivity, 当前值 app.getValue()); // 获取全局值}
}AndroidManifest.xml
?xml version1.0 encodingutf-8?
manifestxmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.android.testandroid:versionCode1android:versionName1.0uses-sdkandroid:minSdkVersion8 /applicationandroid:icondrawable/iconandroid:labelstring/app_nameandroid:nameMyApplication!-- 将我们以前一直用的默认Application设置成自定义的MyApplication--activityandroid:name.FirstActivityandroid:labelstring/app_nameintent-filteractionandroid:nameandroid.intent.action.MAIN /categoryandroid:nameandroid.intent.category.LAUNCHER //intent-filter/activityactivityandroid:name.SecondActivityandroid:labelstring/app_name/activity/application
/manifest五、参考
Android生命周期之一App入口与Application生命周期Application的应用和生命周期