一、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之前保存的信息