我有一个场景,通过登录页面登录后,每个activity
都会有一个注销button
。
点击sign-out
,我将传递已登录用户的session id
以进行注销。任何人都可以指导我如何保持session id
可用于所有activities
?
任何替代这种情况
在当前的 Activity 中,创建一个新的Intent
:
String value="Hello world";
Intent i = new Intent(CurrentActivity.this, NewActivity.class);
i.putExtra("key",value);
startActivity(i);
然后在新的 Activity 中,检索这些值:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
//The key argument here must match that used in the other activity
}
使用此技术将变量从一个 Activity 传递到另一个 Activity。
最简单的方法是将会话 ID 传递给您用于启动活动的Intent
的注销活动:
Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);
访问意图下一个活动
String sessionId= getIntent().getStringExtra("EXTRA_SESSION_ID");
Intent 的文档有更多信息(请参阅标题为 “Extras” 的部分)。
Erich 指出,传递Intent附加功能是一种很好的方法。
Application对象是另一种方式,有时在多个活动中处理相同的状态(而不是必须将其放到任何地方)或者比原语和字符串更复杂的对象时更容易。
您可以扩展 Application,然后设置 / 获取您想要的任何内容,并使用getApplication()从任何 Activity(在同一个应用程序中)访问它。
另请注意,您可能会看到的其他方法(如静态)可能会出现问题,因为它们可能会导致内存泄漏 。应用程序也有助于解决此问