当前位置: 首页 > news >正文

获取全局上下文(getApplicationContext)_创建Shared Preference工具类_实现自动登录

获取全局上下文(getApplicationContext)_创建Shared Preference工具类_实现自动登录

 

===========================获取全局上下文(getApplicationContext)========================

 

1.在com.example.autologin.myapplication包中创建Myapplication extends Application

           代码:

复制代码
 1 public class Myapplication extends Application
 2 {
 3     private static Context context;
 4     
 5     @Override
 6     public void onCreate()
 7     {
 8         super.onCreate();
 9         
10         context = getApplicationContext();
11     }
12     
13     public static Context getAppContext()
14     {
15         return context;
16     }
17 }
复制代码

2.在AndroidManifest.xml中添加属性, 申明Myapplication:

      android:name="com.example.autologin.myapplication.Myapplication"

           代码:

复制代码
 1 <!-- 申明Myapplication -->
 2 <application
 3     android:name="com.example.autologin.myapplication.Myapplication"
 4     android:allowBackup="true"
 5     android:icon="@drawable/ic_launcher"
 6     android:label="@string/app_name"
 7     android:theme="@style/AppTheme" >
 8 
 9     <!-- ....... -->
10 
11 </application>
复制代码

 

================================创建Shared Preference工具类==============================

在包com.example.autologin.utils中创建SpUtil.java类:

           代码:

复制代码
 1 public class SpUtil
 2 {
 3     //
 4     //通过全局上下文创建静态SharedPreferences对象
 5     //
 6     private static SharedPreferences sp =
 7             Myapplication.getAppContext().getSharedPreferences("user",Context.MODE_PRIVATE);
 8 
 9     //静态保存用户账号密码方法
10     public static void saveUser(String name, String pwd)
11     {
12         Editor edit = sp.edit();
13         edit.putString("username", name);
14         edit.putString("pwd", pwd);
15 
16         edit.commit();
17 
18     }
19 
20     //
21     //保存是否有过登录的状态
22     //
23     public static void isLogin(boolean isLogin)
24     {
25         Editor edit = sp.edit();
26         edit.putBoolean("islogin", isLogin);
27         edit.commit();
28     }
29 
30     //
31     //读取是否有过登录的状态
32     //
33     public static boolean getIsLogin()
34     {
35         return sp.getBoolean("islogin", false);
36     }
37 }
复制代码

 

=============================实现自动登录============================

创建欢迎页面SplashActivity.java,读取登录状态,若有过登录则直接跳转主页面,没有登录过跳转登录页面

           代码:

复制代码
 1 Handler handler = new Handler();
 2 handler.postDelayed(new Runnable()
 3 {
 4     @Override
 5     public void run()
 6     {
 7         //
 8         //如果有过登录
 9         //直接跳转主页面
10         //
11         if (SpUtil.getIsLogin())
12         {
13             Intent intent = new Intent(SplashActivity.this, MainActivity.class);
14             startActivity(intent);
15             SplashActivity.this.finish();
16         } else
17         {
18             //
19             //如果没有登录过登录
20             //跳转登录页面
21             //
22             Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
23             startActivity(intent);
24             SplashActivity.this.finish();
25         }
26 
27     }
28 }, 3000);
复制代码

           **注意: 将SplashActivity.java设置为启动页面

 

相关文章:

  • 【火炉炼AI】机器学习053-数据降维绝招-PCA和核PCA
  • 兄弟连区块链教程Fabric1.0源代码分析Ledger(账本)一
  • 简单远程遥控程序【网络程序设计 - 简单远程遥控程序,C实现】
  • CStringArray error C2248: 'CObject::CObject' : cannot access private member declared in class
  • js 在光标处插入内容
  • fastcgi_param 详解
  • dup
  • 常用STL用法总结
  • SQLServer之事务简介
  • 个人笔记:ORACLE大页内存hugepage和SGA、PGA的经验,SGA并不是越大越好
  • JavaScript 类数组对象与 arguments
  • 点击按钮,找不到url
  • WPF模板(一)详细介绍
  • 猿课python第二天
  • 再见了Server对象,拥抱IHostingEnvironment服务对象(.net core)
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Promise面试题2实现异步串行执行
  • React16时代,该用什么姿势写 React ?
  • Redis 懒删除(lazy free)简史
  • SegmentFault 2015 Top Rank
  • Swoft 源码剖析 - 代码自动更新机制
  • TypeScript迭代器
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 高程读书笔记 第六章 面向对象程序设计
  • 机器学习 vs. 深度学习
  • 基于Android乐音识别(2)
  • 如何学习JavaEE,项目又该如何做?
  • 世界上最简单的无等待算法(getAndIncrement)
  • 温故知新之javascript面向对象
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (备忘)Java Map 遍历
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (五)IO流之ByteArrayInput/OutputStream
  • ***测试-HTTP方法
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net 流——流的类型体系简单介绍
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .Net中的设计模式——Factory Method模式
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • /var/log/cvslog 太大
  • [Android Pro] AndroidX重构和映射
  • [android学习笔记]学习jni编程
  • [AR Foundation] 人脸检测的流程
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [C++]:for循环for(int num : nums)
  • [C++]C++入门--引用
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等