很高兴有一个前景活动的静态引用?

时间:2015-02-18 23:10:38

标签: c# android xamarin android-alertdialog android-lifecycle

对前台活动进行静态引用是一种好习惯吗?例如:

public static Activity currentActivity = null;

这个问题很简单,但我找不到太多相关信息。我正在做Xamarin Android - 用C#编写Android应用程序,所以我得到了很多任务(后台线程),我想做一个对话但是我没有参考前景活动。

所以我现在正在做的是对它进行静态引用,在activitylifecyclecallbacks中设置和取消设置引用,以便在每个活动中触发,然后在引用的setter周围放置一个互斥,以确保在极其奇怪的条件下的安全性。

这对我来说似乎有些苛刻,但是获取当前活动实际上是非常困难的,我正在处理的方法是由IocContainers在所有WPF,Android,iOS应用程序中使用的接口定义的,所以我真的无法通过各种活动因为我无法改变方法签名。

1 个答案:

答案 0 :(得分:1)

对我来说似乎是一个坏主意:

  • 管理静态变量状态的大量额外代码
  • 维护开发人员会在调试时讨厌你

为什么不让后台任务触发事件?然后,让前台活动订阅该事件并创建对话框。这样,如果没有前台活动(或前台活动不关心),则没有任何反应。您将交换用于管理静态的代码和用于设置事件处理程序的代码,但这可能更容易维护/调试。