是否有任何简单的方法来确定某个活动是否处于活动状态?我想根据活动的活动来做某些事情。例如:
if(activityrunning == activity1)
//do this
else if (activityrunning == activity2)
//do something else
原文由 user560571 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否有任何简单的方法来确定某个活动是否处于活动状态?我想根据活动的活动来做某些事情。例如:
if(activityrunning == activity1)
//do this
else if (activityrunning == activity2)
//do something else
原文由 user560571 发布,翻译遵循 CC BY-SA 4.0 许可协议
这就是我想出的帮助跟踪不同活动的方法,它们的类派生自一个基本的“助手”类。
protected static Dictionary<string, bool> _activityInstances = new Dictionary<string, bool>();
protected static Dictionary<string, bool> _activitiesVisible = new Dictionary<string, bool>();
protected override void OnStart()
{
base.OnStart();
_activityInstances[this.GetType().Name] = true;
}
protected override void OnDestroy()
{
_activityInstances[this.GetType().Name] = false;
base.OnDestroy();
}
protected override void OnResume()
{
base.OnResume();
_activitiesVisible[this.GetType().Name] = true;
}
protected override void OnPause()
{
_activitiesVisible[this.GetType().Name] = false;
base.OnPause();
}
public static bool activityIsInstanced(string type)
{
return _activityInstances.ContainsKey(type) ? _activityInstances[type] : false;
}
public static bool activityIsVisible(string type)
{
return _activitiesVisible.ContainsKey(type) ? _activityInstances[type] : false;
}
它可以继承,但为了运行测试(即在启动特定活动的新副本之前),您需要使用类的名称调用静态方法,例如
if (!SettingsEdit.activityIsInstanced("SettingsEdit"))
{
Intent intent = new Intent(this, typeof(SettingsEdit));
Bundle bundle = new Bundle();
bundle.PutString(MY_SETTING, this.someSetting);
intent.PutExtras(bundle);
this.StartActivityForResult(intent, 0);
}
如果它对任何人有帮助,我想我会在这里分享。
原文由 dooferorg 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读✓ 已解决
2 回答2.6k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
1 回答1.1k 阅读
1 回答1.3k 阅读
1.3k 阅读
您可以在活动中使用
static
变量。唯一的问题是,如果您在两个相互链接的活动中使用它,那么第一个上的
onStop
有时会在第二个上的onStart
之后调用。所以两者都可能是正确的。取决于您要做什么(从服务更新当前活动?)。您可以在您的活动
onStart
方法的服务中注册一个静态侦听器,然后当您的服务想要更新 UI 时,正确的侦听器将可用。