一、Application
Application一般在Activity之前创建,可以定义自己的Application

在Application中用name指定自己定义的Application的名字,就可以使用非默认的Application了。

二、用Application保存全局变量

为什么不用static来实现全局变量?
因为static变量只会在进程结束时被回收,会造成不使用的静态变量一直占据内存。
定义一个新类继承Application类:
同时在类内定义map存储全局变量
package com.example.study06;
import android.app.Application;
import java.util.HashMap;
public class MyApplication extends Application {
public static MyApplication myapp;
public HashMap<String, String> infoMap = new HashMap<>();
public static MyApplication getInstance(){
return myapp;
}
@Override
public void onCreate() {
super.onCreate();
myapp = this;
}
}
使用该类:
package com.example.study06;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class AppWriteActivity extends AppCompatActivity implements View.OnClickListener {
private EditText et;
private Button bt;
private MyApplication myapp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_write);
et = findViewById(R.id.et);
bt = findViewById(R.id.bt);
bt.setOnClickListener(this);
myapp = MyApplication.getInstance();
reload();
}
private void reload() {
String phone = myapp.infoMap.get("phone");
if(phone!=null){
et.setText(phone);
}
}
@Override
public void onClick(View view) {
String phone = et.getText().toString();
myapp.infoMap.put("phone",phone);
}
}
效果:
表单内容会被存储到Application类中,在没有结束APP进程的情况下,再次访问表单,可以reload之前保存的信息
文章介绍了如何在Android中通过创建自定义Application类来管理全局变量,避免使用static变量带来的内存占用问题。在自定义的MyApplication类中,使用HashMap存储信息,并提供了getInstance方法供其他Activity访问。这种方式可以在应用未关闭时持久保存表单数据,便于用户再次打开时恢复信息。
646

被折叠的 条评论
为什么被折叠?



