我正在创建一个需要登录的应用程序。 我创建了主要和登录活动。

在主要活动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中声明全局变量?相关推荐

  1. php中全局变量如何设置,如何在php中声明全局变量?

    我有这样的代码: $a="localhost"; function body(){ global $a; echo $a; } function head(){ global $a ...

  2. 如何在MySQL中声明变量?

    本文翻译自:How to declare a variable in MySQL? How to declare a variable in mysql, so that my second quer ...

  3. 如何在Python中声明一个数组?

    如何在Python中声明数组? 我在文档中找不到任何对数组的引用. #1楼 这个怎么样... >>> a = range(12) >>> a [0, 1, 2, 3 ...

  4. java 全局数组_如何在Java中声明全局数组?

    我有一个程序在Java中乘以两个矩阵.我在全局错误声明中发现了一些错误. 这里是我的代码如何在Java中声明全局数组? import java.util.Scanner; /**WAP in Java ...

  5. android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果

    如何在Android应用层中制作一个LED指示灯效果 发布时间:2020-12-08 16:12:59 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关如何在Android应用层中 ...

  6. android打电话的intent,如何在Android中使用intent打电话?

    如何在Android中使用intent打电话? 我正在使用以下代码在Android中进行调用,但它给了我安全例外,请帮忙. posted_by = "111-333-222-4"; ...

  7. android studio创建md,如何在Android Studio中设置*md文件打开方式

    最近在Android Studio中写一些Demo的时候,会顺便在里面创建一个.md文件用来进行Demo笔记的书写.然而Android Studio不带有markdown预览功能,所以我就琢磨如何在A ...

  8. Android清空Fragment缓存,如何在Android中清除Fragment Backstack

    如何在Android中清除Fragment Backstack 您好如何清除片段回堆栈正在使用以下逻辑,它不起作用... for(int i = 0; i < mFragmentManager. ...

  9. android指定日期闹钟,如何在android中设置特定日期的闹钟?

    嗨我需要使用时间选择器来设置特定日期的闹钟.当我给出静态输入时,闹钟设置不正确并响铃. 例如:我给静态输入(与日期,月份和年份),但它不振铃.这是我的代码.如何在android中设置特定日期的闹钟? ...

  10. android 调取数字键盘,如何在android中的EditText上显示数字键盘?

    如何在android中的EditText上显示数字键盘? 我只是想在某个EditText具有焦点时立即切换到数字键盘模式. 13个解决方案 239 votes 您可以为EditText配置EditTe ...

最新文章

  1. OC系列foundation Kit基础-NSDate
  2. 【计算机网络】 DNS学习笔记 (>﹏<)
  3. hibernate一级缓存和二级缓存的区别[转]
  4. sublime 解决中文乱码
  5. Java Socket网络编程常见异常(转)
  6. $()是有两个参数,第一个是选择器,第二个是作用域
  7. Jmeter BeanShell采样器提取接口响应并传递(三)
  8. php如何安装源码包,php源码包安装步骤是什么
  9. AudioToolbox音效播放
  10. MIF/MID格式简介
  11. 五颜六色 CSS颜色代码表
  12. Excel常用10个函数
  13. 职场人一起进阶吧(内附技术人进阶路径、Java开源项目完整推荐等)
  14. 送一些专属红包封面。
  15. MATLAB强化学习实战(一) 强化学习智能体训练总览
  16. 联想开机启动项按哪个_联想笔记本按哪个按键进入U盘启动|详解联想进入U盘启动的教程...
  17. chrome中下载文档时设置成不使用idm下载器的方法
  18. Clickhouse Live View
  19. 瑞星安全随身WiFi:为用户WiFi上网安全保驾护航
  20. 场效应管(FET)总结:

热门文章

  1. 60TB 数据量的作业从 Hive 迁移到 Spark 在 Facebook 的实践
  2. 通过SQL即可让监控分析更简单更高效
  3. 时尚电商新赛道:揭秘 FashionAI 技术
  4. 阿里巴巴高级技术专家至简:聊工程师思维
  5. 舞动的桥 阿里云首个百万IOPS云盘的背后
  6. 走进英特尔中国研究院探索创新日:发布最新科研成果与创新策略
  7. ​做安全操作系统,这位技术老兵是认真的!
  8. 十年技术骨干面试被开出一万五薪资,直呼 “这是对我的侮辱”
  9. “毕业1年,做Python挣了50W!”网友:吹得太少..
  10. 边缘计算的五个大坑,里面一定有你跳过的