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活动返回肯定结果,您的第二次登录就会被阻止。 每次都会调用简历,因此不必担心第一次没有调用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值