android如何建立全局变量,如何在Android中声明全局变量?
我正在创建一个需要登录的应用程序。 我创建了主要和登录活动。
在主要活动onCreate方法中我添加了以下条件:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
loadSettings();
if(strSessionString == null)
{
login();
}
...
}
登录表单终止时执行的onActivityResult方法如下所示:
@Override
public void onActivityResult(int requestCode,
int resultCode,
Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case(SHOW_SUBACTICITY_LOGIN):
{
if(resultCode == Activity.RESULT_OK)
{
strSessionString = data.getStringExtra(Login.SESSIONSTRING);
connectionAvailable = true;
strUsername = data.getStringExtra(Login.USERNAME);
}
}
}
问题是登录表单有时会出现两次( login()方法被调用两次),当手机键盘滑动时,再次出现登录表单,我猜问题是变量strSessionString 。
有没有人知道如何设置变量global以避免在用户已经成功验证后出现登录表单?
#1楼
就像上面讨论的那样OS可以在没有任何通知的情况下杀死APPLICATION(没有onDestroy事件),所以没有办法保存这些全局变量。
SharedPreferences可能是一个解决方案,除了你有COMPLEX STRUCTURED变量(在我的例子中,我有整数数组来存储用户已经处理过的ID)。 SharedPreferences的问题在于,每次需要值时都很难存储和检索这些结构。
在我的情况下,我有一个后台服务,所以我可以将这些变量移动到那里,因为服务有onDestroy事件,我可以轻松保存这些值。
#2楼
您可以使用Intents,Sqlite或共享首选项。 对于媒体存储,如文档,照片和视频,您可以改为创建新文件。
#3楼
我找不到如何指定应用程序标签,但经过大量的谷歌搜索后,从清单文件docs中可以看出:除了应用程序节中的默认图标和标签外,还使用了android:name。
android:name为应用程序实现的Application子类的完全限定名称。 启动应用程序进程时,将在任何应用程序的组件之前实例化此类。
子类是可选的; 大多数应用程序不需要一个。 在没有子类的情况下,Android使用基本Application类的实例。
#4楼
class GlobaleVariableDemo extends Application {
private String myGlobalState;
public String getGlobalState(){
return myGlobalState;
}
public void setGlobalState(String s){
myGlobalState = s;
}
}
class Demo extends Activity {
@Override
public void onCreate(Bundle b){
...
GlobaleVariableDemo appState = ((GlobaleVariableDemo)getApplicationContext());
String state = appState.getGlobalState();
...
}
}
#5楼
在恢复之前调用活动结果。 因此,将登录检查移至恢复状态,一旦secomd活动返回肯定结果,您的第二次登录就会被阻止。 每次都会调用简历,因此不必担心第一次没有调用它。
android如何建立全局变量,如何在Android中声明全局变量?相关推荐
- php中全局变量如何设置,如何在php中声明全局变量?
我有这样的代码: $a="localhost"; function body(){ global $a; echo $a; } function head(){ global $a ...
- 如何在MySQL中声明变量?
本文翻译自:How to declare a variable in MySQL? How to declare a variable in mysql, so that my second quer ...
- 如何在Python中声明一个数组?
如何在Python中声明数组? 我在文档中找不到任何对数组的引用. #1楼 这个怎么样... >>> a = range(12) >>> a [0, 1, 2, 3 ...
- java 全局数组_如何在Java中声明全局数组?
我有一个程序在Java中乘以两个矩阵.我在全局错误声明中发现了一些错误. 这里是我的代码如何在Java中声明全局数组? import java.util.Scanner; /**WAP in Java ...
- android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果
如何在Android应用层中制作一个LED指示灯效果 发布时间:2020-12-08 16:12:59 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关如何在Android应用层中 ...
- android打电话的intent,如何在Android中使用intent打电话?
如何在Android中使用intent打电话? 我正在使用以下代码在Android中进行调用,但它给了我安全例外,请帮忙. posted_by = "111-333-222-4"; ...
- android studio创建md,如何在Android Studio中设置*md文件打开方式
最近在Android Studio中写一些Demo的时候,会顺便在里面创建一个.md文件用来进行Demo笔记的书写.然而Android Studio不带有markdown预览功能,所以我就琢磨如何在A ...
- Android清空Fragment缓存,如何在Android中清除Fragment Backstack
如何在Android中清除Fragment Backstack 您好如何清除片段回堆栈正在使用以下逻辑,它不起作用... for(int i = 0; i < mFragmentManager. ...
- android指定日期闹钟,如何在android中设置特定日期的闹钟?
嗨我需要使用时间选择器来设置特定日期的闹钟.当我给出静态输入时,闹钟设置不正确并响铃. 例如:我给静态输入(与日期,月份和年份),但它不振铃.这是我的代码.如何在android中设置特定日期的闹钟? ...
- android 调取数字键盘,如何在android中的EditText上显示数字键盘?
如何在android中的EditText上显示数字键盘? 我只是想在某个EditText具有焦点时立即切换到数字键盘模式. 13个解决方案 239 votes 您可以为EditText配置EditTe ...
最新文章
- OC系列foundation Kit基础-NSDate
- 【计算机网络】 DNS学习笔记 (>﹏<)
- hibernate一级缓存和二级缓存的区别[转]
- sublime 解决中文乱码
- Java Socket网络编程常见异常(转)
- $()是有两个参数,第一个是选择器,第二个是作用域
- Jmeter BeanShell采样器提取接口响应并传递(三)
- php如何安装源码包,php源码包安装步骤是什么
- AudioToolbox音效播放
- MIF/MID格式简介
- 五颜六色 CSS颜色代码表
- Excel常用10个函数
- 职场人一起进阶吧(内附技术人进阶路径、Java开源项目完整推荐等)
- 送一些专属红包封面。
- MATLAB强化学习实战(一) 强化学习智能体训练总览
- 联想开机启动项按哪个_联想笔记本按哪个按键进入U盘启动|详解联想进入U盘启动的教程...
- chrome中下载文档时设置成不使用idm下载器的方法
- Clickhouse Live View
- 瑞星安全随身WiFi:为用户WiFi上网安全保驾护航
- 场效应管(FET)总结:
热门文章
- 60TB 数据量的作业从 Hive 迁移到 Spark 在 Facebook 的实践
- 通过SQL即可让监控分析更简单更高效
- 时尚电商新赛道:揭秘 FashionAI 技术
- 阿里巴巴高级技术专家至简:聊工程师思维
- 舞动的桥 阿里云首个百万IOPS云盘的背后
- 走进英特尔中国研究院探索创新日:发布最新科研成果与创新策略
- ​做安全操作系统,这位技术老兵是认真的!
- 十年技术骨干面试被开出一万五薪资,直呼 “这是对我的侮辱”
- “毕业1年,做Python挣了50W!”网友:吹得太少..
- 边缘计算的五个大坑,里面一定有你跳过的