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();
} }
五.动态演示

Android中Application类的使用的更多相关文章
- Android中Application类的详解:
Android中Application类的详解: 我们在平时的开发中,有时候可能会须要一些全局数据.来让应用中的全部Activity和View都能訪问到.大家在遇到这样的情况时,可能首先会想到自定义一 ...
- Android中Application类总结
本文出处: 炎之铠csdn博客:http://blog.csdn.net/totond 炎之铠邮箱:yanzhikai_yjk@qq.com 本文原创,转载请注明本出处! 前言 最近的开发中经常使用到 ...
- [转]Android中Application类的用法
原文链接:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application ...
- 【转】Android中Application类用法
转自:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application和A ...
- Android中Application类用法
Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...
- Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法
Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...
- android中Handle类的用法
android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...
- Android中一个类实现的接口数不能超过七个
近期一段时间,在开发Android应用程序的过程中,发现Android中一个类实现的接口数超过七个的时候,常常会出现超过第7个之后的接口不能正常使用.
- Android中Cursor类的概念和用法[转]
首页 > 程序开发 > 移动开发 > Android > 正文 Android中Cursor类的概念和用法 2011-09-07 0个评论 收藏 ...
随机推荐
- 去除winrar弹出购买许可证的提示
我们在使用winrar压缩包管理器时,经常会遇到弹出购买许可证的提示,影响了我们操作软件的友好性,接下来我们就来处理避免这种情况的再次发生.弹出购买许可证的图形如下: 处理方法如下: 新建一个记事本文 ...
- Linux实战教学笔记28:企业级LNMP环境应用实践
一,LNMP应用环境 1.1 LNMP介绍 大约在2010年以前,互联网公司最常用的经典Web服务环境组合就是LAMP(即Linux,Apache,MySQL,PHP),近几年随着Nginx Web服 ...
- 阿里巴巴Java开发规约扫描插件-Alibaba Java Coding Guidelines 在idea上安装使用教程
经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.P3C是世界知名的反潜机,专门对付 ...
- 此时servlet中的request和我们在页面jsp中的request 是同一个request.
在tomcat容器启动的时候,jsp页面的内置对象request,response,同样是依赖于tomcat容器中的servlet-api.jar包,这个jar包和我们在web项目中的jar包是一样的 ...
- 关于iOS URL缓存机制原理解析
关于URL缓存机制中 利用request对象判断是否缓存 其实request是否相等的判断依据是URLString是否相等
- fastdfs 有用 新增tracker或storage
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务,如相 ...
- Mongodb基于oplog恢复至任意时间
背景: 最近后端基于mongo的项目越来越多,MySQL基于冷备份+binlog可以恢复至任意时间点,那么mongo是否有同样的功能呢?经过调研发现可以通过dump+oplog可以实现粒度更细致的恢复 ...
- python链接
http://www.crifan.com/files/doc/docbook/python_beginner_tutorial/release/html/python_beginner_tutori ...
- 在Linux下配置.net网站
一.Linux安装 1.1 Linux环境 本篇文章选择VMWare虚拟机安装Linux,使用的Linux是CentOS-7.可以在百度上自行下载一个VMWare和CentOS-7镜像,建议使用最新版 ...
- vscode安装设置go
vscode安装设置go vscode安装go配置 1.下载最新的vscode: https://code.visualstudio.com/docs/?dv=win 2.下载go: https:// ...