当前位置:   article > 正文

Applicaton生命周期-(14)_android application 生命周期 结束

android application 生命周期 结束

Application 是 Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期 。

一、生命周期 

 

  1. package com.qidian.chapter07;
  2. import android.app.Application;
  3. import android.content.res.Configuration;
  4. import android.util.Log;
  5. import androidx.annotation.NonNull;
  6. public class MyApplication extends Application {
  7. private static String TAG = "guo";
  8. // 在App启动时调用
  9. @Override
  10. public void onCreate() {
  11. super.onCreate();
  12. Log.d(TAG, "onCreate: ");
  13. }
  14. // 在App终止时调用
  15. @Override
  16. public void onTerminate() {
  17. super.onTerminate();
  18. Log.d(TAG, "onTerminate: ");
  19. }
  20. // 在配置改变时调用(横竖屏切换,kill应用)
  21. @Override
  22. public void onConfigurationChanged(@NonNull Configuration newConfig) {
  23. super.onConfigurationChanged(newConfig);
  24. Log.d(TAG, "onConfigurationChanged: ");
  25. }
  26. }

二、利用Application操作全局变量

全局的意思的其他代码都可以引用该变量,因此全局变量是共享数据和消息传递的好帮手。

适合在Application中保存的全局变量主要有下面3类数据:

  • 会频繁读取的信息,如用户名、手机号
  • 不方便由Intent传递的数据,例如位图对象、非字符串类型的集合对象
  • 容易因频繁分配内存导致内存泄露的对象,如Handler对象等。
    1. package com.qidian.chapter07;
    2. import android.app.Application;
    3. import android.content.res.Configuration;
    4. import android.util.Log;
    5. import androidx.annotation.NonNull;
    6. import java.util.HashMap;
    7. public class MyApplication extends Application {
    8. private static String TAG = "guo";
    9. private static MyApplication myApp;
    10. // 声明一个公共的信息映射对象,可当全局变量使用(需要注意的是kill掉应用进程结束,MyApplication生命周期结束,所存储的数据也随之消失)
    11. public HashMap<String, String> infoMap = new HashMap<>();
    12. public static MyApplication getInstance() {
    13. return myApp;
    14. }
    15. // 在App启动时调用(应用只会执行一次)
    16. @Override
    17. public void onCreate() {
    18. super.onCreate();
    19. myApp = this;
    20. Log.d(TAG, "onCreate: ");
    21. }
    22. // 在App终止时调用
    23. @Override
    24. public void onTerminate() {
    25. super.onTerminate();
    26. Log.d(TAG, "onTerminate: ");
    27. }
    28. // 在配置改变时调用(横竖屏切换,kill应用)
    29. @Override
    30. public void onConfigurationChanged(@NonNull Configuration newConfig) {
    31. super.onConfigurationChanged(newConfig);
    32. Log.d(TAG, "onConfigurationChanged: ");
    33. }
    34. }
    1. package com.qidian.chapter07;
    2. import android.os.Bundle;
    3. import android.view.View;
    4. import android.widget.CheckBox;
    5. import android.widget.EditText;
    6. import androidx.appcompat.app.AppCompatActivity;
    7. public class AppWriteActivity extends AppCompatActivity implements View.OnClickListener {
    8. private CheckBox ck_married;
    9. private EditText et_name;
    10. private EditText et_age;
    11. private EditText et_height;
    12. private EditText et_weight;
    13. private MyApplication app = MyApplication.getInstance();
    14. @Override
    15. protected void onCreate(Bundle savedInstanceState) {
    16. super.onCreate(savedInstanceState);
    17. setContentView(R.layout.activity_app_write);
    18. ck_married = findViewById(R.id.ck_married);
    19. et_name = findViewById(R.id.et_name);
    20. et_age = findViewById(R.id.et_age);
    21. et_height = findViewById(R.id.et_height);
    22. et_weight = findViewById(R.id.et_weight);
    23. findViewById(R.id.btn_save).setOnClickListener(this);
    24. reload();
    25. }
    26. private void reload() {
    27. if (app.infoMap.get("name") == null) {
    28. return;
    29. }
    30. String name = app.infoMap.get("name");
    31. String age = app.infoMap.get("age");
    32. String height = app.infoMap.get("height");
    33. String weight = app.infoMap.get("weight");
    34. String married = app.infoMap.get("married");
    35. et_name.setText(name);
    36. et_age.setText(age);
    37. et_height.setText(height);
    38. et_weight.setText(weight);
    39. }
    40. @Override
    41. public void onClick(View v) {
    42. String name = et_name.getText().toString();
    43. String age = et_age.getText().toString();
    44. String height = et_height.getText().toString();
    45. String weight = et_weight.getText().toString();
    46. app.infoMap.put("name",name);
    47. app.infoMap.put("age",age);
    48. app.infoMap.put("height",height);
    49. app.infoMap.put("weight",weight);
    50. }
    51. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/589786
推荐阅读
相关标签
  

闽ICP备14008679号