Android中Application类的使用

在最近的Android项目中,有些代码需要从程序的运行周期开始一直到运行周期结束;比如说本地数据库的初始化,从服务器获取数据等;可以说Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期于是就引出了Application这个类,当程序启动的时候系统会创建一个Application对象,用来存储系统的一些信息,一般来说是不需要我们指定一个Application的,系统会自动帮我们创建,但如果我们需要在程序启动时,运行一些全局代码时,可以创建一个自己的Application类并继承Application, 而且需要重写onCreate函数,另外需要在mainifest中的application标签中进行注册(给application标签增加name属性把自己的Application的名字加进来就可以了),注册完成后,启动Application,系统会为我们创建一个进程,所有的Activity都会在此进程上运行,那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中的值就会改变。则会调用我们重写的onCreate()函数,在这个函数中可以去具体实现我们想要实现的逻辑。

下面是我自定义的一个Application对象用来获取全局的上下文用于SharePreferences本地文件的存储

一.布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/text_write"
            android:layout_width="250dp"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/btn_write"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:text="写入"/>

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <EditText
            android:id="@+id/text_read"
            android:layout_width="250dp"
            android:layout_height="wrap_content"/>

        <Button
            android:id="@+id/btn_read"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:text="读入"/>

    </LinearLayout>

</LinearLayout>

二. Application

package lonbon.com.myapplication;

import android.app.Application;
import android.content.Context;

public class MyApplication extends Application {

    private static Context context;

    //获取上下文
    public static Context getAppContext(){
        return context.getApplicationContext();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = this;
    }
}

三.主界面

package lonbon.com.myapplication;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "MainActivity";
    private static final String WRITE_TEXT = "WRITE_TEXT";
    private EditText writeText;
    private EditText readText;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        Button btnWrite = (Button)findViewById(R.id.btn_write);
        Button btnRead = (Button)findViewById(R.id.btn_read);
        writeText = (EditText)findViewById(R.id.text_write);
        readText = (EditText)findViewById(R.id.text_read);
        btnWrite.setOnClickListener(this);
        btnRead.setOnClickListener(this);
        //隐藏任务标题栏
        ActionBar actionBar = getSupportActionBar();
        if(actionBar != null){
            actionBar.hide();
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_write:
                String write = writeText.getText().toString();
                SharePreferencesUntils.putString(WRITE_TEXT, write);
                Toast.makeText(this, "写入成功", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_read:
                String read =  SharePreferencesUntils.getString(WRITE_TEXT, "");
                if(!TextUtils.isEmpty(read)){
                    readText.setText(read);
                    Toast.makeText(this, "读取成功", Toast.LENGTH_SHORT).show();
                }
                break;

        }
    }
}

四.SharePreferences封装类

package lonbon.com.myapplication;

import android.content.Context;
import android.content.SharedPreferences;

public class SharePreferencesUntils {

    public static final String NAME = "user";

    //存入:String类型
    public static void putString(String key, String value){

        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        sp.edit().putString(key,value).apply();
    }
    
    //获取:String类型
    public static String getString(String key, String defValue){
        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        return sp.getString(key,defValue);
    }

    //存入:int类型
    public static void putInt(String key, int value){
        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        sp.edit().putInt(key,value).apply();
    }

    //获取:int类型
    public static int getInt(String key, int defValue){
        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        return sp.getInt(key,defValue);
    }

    //存入:boolean类型
    public static void putBoolean(String key, boolean value){
        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        sp.edit().putBoolean(key,value).apply();
    }

    //获取:boolean类型
    public static boolean getBoolean(String key, boolean defValue){
        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        return sp.getBoolean(key,defValue);
    }

    //刪除 单个
    public static void deleShare(String key){
        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        sp.edit().remove(key).apply();
    }

    //刪除 全部
    public static void deleAll(){
        SharedPreferences sp =  MyApplication.getAppContext().getSharedPreferences(NAME,Context.MODE_PRIVATE);
        sp.edit().clear().apply();
    }

}

五.动态演示

转载于:https://www.cnblogs.com/QingYiShouJiuRen/p/10794092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值