对前台活动进行静态引用是一种好习惯吗?例如:
public static Activity currentActivity = null;
这个问题很简单,但我找不到太多相关信息。我正在做Xamarin Android - 用C#编写Android应用程序,所以我得到了很多任务(后台线程),我想做一个对话但是我没有参考前景活动。
所以我现在正在做的是对它进行静态引用,在activitylifecyclecallbacks中设置和取消设置引用,以便在每个活动中触发,然后在引用的setter周围放置一个互斥,以确保在极其奇怪的条件下的安全性。
这对我来说似乎有些苛刻,但是获取当前活动实际上是非常困难的,我正在处理的方法是由IocContainers在所有WPF,Android,iOS应用程序中使用的接口定义的,所以我真的无法通过各种活动因为我无法改变方法签名。
答案 0 :(得分:1)
对我来说似乎是一个坏主意:
为什么不让后台任务触发事件?然后,让前台活动订阅该事件并创建对话框。这样,如果没有前台活动(或前台活动不关心),则没有任何反应。您将交换用于管理静态的代码和用于设置事件处理程序的代码,但这可能更容易维护/调试。