c# - 对前台 Activity 有一个静态引用很好吗?

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

对前台 Activity 进行静态引用是好的做法吗?例如:

public static Activity currentActivity = null;

这个问题很简单,但我找不到太多相关信息。我正在做 Xamarin Android - 在 C# 中编写 android 应用程序,所以我有很多任务(后台线程),我想做一个对话框,但我没有引用任何前台 Activity 。

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

这对我来说似乎有点骇人听闻,但获取当前 Activity 确实非常困难,而且我正在处理的方法是由 IocContainers 在所有 WPF、Android、iOS 应用程序中使用的接口(interface)定义的,所以我真的无法传递 Activity 因为我无法更改方法签名。

最佳答案

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

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

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

关于c# - 对前台 Activity 有一个静态引用很好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595754/

相关文章:

android - Xamarin WebView 项目中的 Intellisense 错误

ios - Xamarin iOS : Cannot render iOS Storyboard in Visual Studio 2013

c# - .NET 写入分隔文本文件

c# - 如何使用 asp.net mvc 和单元测试组织代码和测试

C# dateTimePicker 焦点不起作用

android - JakeWharton 的 DiskLruCache 示例

java - 在 Activity 之间传递整数值 - Android

c# - 如何构建我的网站的移动(平板电脑)友好版本?

android - 如何在我的应用程序中以 Bootstrap 类型显示进度条?

visual-studio - Xamarin.iOS,应用程序甚至在手机上运行之前就崩溃了