如果 Activity 被销毁,我可以从 Activity 调用静态方法吗?
Posted
技术标签:
【中文标题】如果 Activity 被销毁,我可以从 Activity 调用静态方法吗?【英文标题】:Can I call static method from Activity if Activity is destroyed? 【发布时间】:2019-02-17 12:20:26 【问题描述】:在 Xamarin.android 中,如果一个 Activity 由于内存不足而被杀死,我仍然可以从另一个 Activity 中调用该 Activity 中定义的静态方法吗? em>活动。例如:
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?
【问题讨论】:
是的,我假设someIntValue
也是基于静态的,还是从静态值派生的。
也许只是作为一个提示,有更合适的方式将值从活动传递到活动而不是静态 getter。意图即。
【参考方案1】:
您可以随时在任何可访问的类上调用静态方法。只需使用 MyClass.staticMethod()。请注意,如果 deadInstanceOfMyClass == null,则不能以这种方式调用 deadInstanceOfMyClass.staticMethod()。
【讨论】:
【参考方案2】:如果Activity被销毁,我可以从Activity调用静态方法吗?
正如 SushiHangover 所说,答案是肯定的。
在 Xamarin.Android 中,如果 Activity 因内存不足而被终止,我还能从另一个 Activity 调用该 Activity 中定义的静态方法吗?
请注意,Android 不会杀死单个活动,Android 会杀死进程。
进程大致是一个应用程序以及该应用程序中的所有内容 - 与该特定应用程序相关的所有活动、服务、应用程序类,在大多数情况下,一个应用程序等于一个进程。
这意味着,如果 Android 修剪了一个进程,则其中的所有活动(以及与该应用程序相关的所有其他内容)也将因此而死。 Android(尤其是当达到特定内存阈值时负责终止进程的 Android 内核)不会修剪该进程/该应用程序中的单个组件,它甚至不知道或不关心它们的存在。
因此,如果您的应用因内存不足而被系统杀死,那么您的所有Activity
都将被销毁。
【讨论】:
【参考方案3】:是,假设someIntValue
是静态的或硬编码的整数值。
【讨论】:
以上是关于如果 Activity 被销毁,我可以从 Activity 调用静态方法吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何从B Activity返回 A Activity但是不销毁B
当Activity被销毁时,为什么Service会破坏自我?
android:当Activity和Service 都被销毁后,如何控制其中生成的线程?