如果Activity被销毁,我可以从Activity调用静态方法吗?

问题描述 投票:2回答:3

在Xamarin.Android中,如果一个Activity由于内存不足而被杀死,我仍然可以从另一个Activity中调用该Activity中定义的静态方法。例如:

public class MyKilledActivity : Activity 
{
  ....
  public static int MyStaticMethod()
  {
    .....
    return someIntValue;
  }
}

public class AnotherActivity : Activity
{
    .....
    int value = MyKilledActivity.MyStaticMethod(); // Would it work if MyKilledActivity is destroyed?
}
android android-activity xamarin.android static-methods activity-lifecycle
3个回答
0
投票

如果Activity被销毁,我可以从Activity调用静态方法吗?

就像SushiHangover说的那样,答案是肯定的。

在Xamarin.Android中,如果一个Activity由于内存不足而被杀死,我还可以从另一个Activity中调用该Activity中定义的静态方法吗?

请注意,Android不会杀死单个活动,Android会杀死进程。

流程大致是应用程序和该应用程序中的所有内容 - 与该特定应用程序相关的所有活动,服务和应用程序类,在大多数情况下,一个应用程序等于一个进程。

这意味着,如果Android修剪了一个进程,那么其中的所有活动(以及与该应用程序相关的所有其他活动)也将因此而死亡。 Android(特别是负责在达到某些内存阈值时终止进程的Android内核)不会修改该进程内/该应用程序内的单个组件,它甚至不知道或不关心它们是否存在。

因此,如果你的应用程序由于内存不足而被系统杀死,那么你的所有Activity都将被销毁。


2
投票

您始终可以在任何可访问的类上调用静态方法。只需使用MyClass.staticMethod()。请注意,如果deadInstanceOfMyClass == null,则不能以这种方式调用deadInstanceOfMyClass.staticMethod()。


0
投票

是的,假设someIntValue是静态的或硬编码的整数值。

© www.soinside.com 2019 - 2024. All rights reserved.