2026/2/12 8:30:51
网站建设
项目流程
网站建设挂什么费用,深圳seo秘籍,网站开发答辩ppt,wordpress怎么加地图吗一、Application的生命周期1、如果有这样的需求
资源不需要持久化#xff0c;放到内存里就可以了
希望多个组件都可以访问这个数据
希望它是个可以操作的全局变量可以使用Application这个组件2、Application是Android的一大组件#xff0c;在App运行过程中有且仅有一个Applic…一、Application的生命周期1、如果有这样的需求资源不需要持久化放到内存里就可以了希望多个组件都可以访问这个数据希望它是个可以操作的全局变量可以使用Application这个组件2、Application是Android的一大组件在App运行过程中有且仅有一个Application对象贯穿整个生命周期3、Application组件方法说明1onCreate在App启动时调用可以在这里做准备工作2onTerminate只在模拟环境上有效在App终止时调用可以在这里做善后的工作这个接口是给Android系统开发工程师用的不是Android应用开发工程师用3onConfigurationChanged在配置改变的时候调用例如从竖屏变为横屏屏幕旋转Activity会重新创建此时页面上表单填的内容都会消失。可以用ViewModel来解决4、例子MyApplication.javapackage com.example.chapter06; import android.app.Application; import android.content.res.Configuration; import android.util.Log; import androidx.annotation.NonNull; public class MyApplication extends Application { // 在App启动时调用 Override public void onCreate() { super.onCreate(); Log.d(sam, MyApplication onCreate); } // 在App终止时调用 Override public void onTerminate() { super.onTerminate(); Log.d(sam, MyApplication onTerminate); } // 在配置改变的时候调用例如从竖屏变为横屏 Override public void onConfigurationChanged(NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d(sam, MyApplication onConfigurationChanged); } }MainActivity.javapackage com.example.chapter06; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(sam, MainActivity onCreate); } }AndroidManifest.xml清单文件application标签下添加android:name.MyApplication?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/android application android:name.MyApplication android:allowBackuptrue android:iconmipmap/ic_launcher android:labelstring/app_name android:roundIconmipmap/ic_launcher_round android:supportsRtltrue android:themestyle/Theme.MyApplication activity android:name.MainActivity android:exportedtrue intent-filter action android:nameandroid.intent.action.MAIN / category android:nameandroid.intent.category.LAUNCHER / /intent-filter /activity /application /manifest5、日志竖屏变成横屏二、利用Application操作全局变量1、Application的数据可以让Activity共享2、Application在整个应用中只有一个实例所以在我们自定义的时候需要使用单例模式来写构造方法改造MyApplication.javapackage com.example.chapter06; import android.app.Application; import android.content.res.Configuration; import android.util.Log; import androidx.annotation.NonNull; import java.util.HashMap; public class MyApplication extends Application { private static MyApplication mApp; // 声明一个公共的信息映射对象可当做全局变量使用 public HashMapString, String infoMap new HashMap(); public static MyApplication getInstance() { return mApp; } // 在App启动时调用 Override public void onCreate() { super.onCreate(); mApp this; // 在onCreate初始化实例 Log.d(sam, MyApplication onCreate); } // 在App终止时调用 Override public void onTerminate() { super.onTerminate(); Log.d(sam, MyApplication onTerminate); } // 在配置改变的时候调用例如从竖屏变为横屏 Override public void onConfigurationChanged(NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d(sam, MyApplication onConfigurationChanged); } }使用MyApplication mApp MyApplication.getInstance(); mApp.infoMap.put(name, name); mApp.infoMap.put(age, age);3、适合在Application中保存的全局变量主要有下面3类数据1会频繁读取的信息如用户名、手机号等2不方便由Intent传递的数据例如位图对象、非字符串类型的集合对象等3容易因频繁分配内存而导致内存泄漏的对象如Handler对象等