クラスを使用してアクティビティ間で静的データを保存する Android アプリケーションがあります。
class Global
{
private static boolean mInitialized = false;
private static String mData = null;
public static void init()
{
mData = "something";
mInitialized = true;
}
public static boolean isInitialized()
{
return mInitialized;
}
public static String getData()
{
return mData;
}
}
したがって、メイン アクティビティ onCreate では、次のことを行います。
if( Global.isInitialized() == false )
Global.init();
その後、他のアクティビティを開始します。アクション フローは次のとおりです。
MainActivity -> ActionActivity -> PluginActivity
Main は Global クラスを開始する場所で、Action & Plugin はそのクラスの getData() メソッドを使用する場所です。
場合によっては、本当に奇妙な動作が発生します... PluginActivity (たとえば NullPointerException ) で予期しないことが発生した場合、アクティビティがクラッシュし、アプリケーションはそれを起動した ActionActivity に戻りますが、この時点で、onCreate のActionActivity (Global クラスが初期化されるはずの場所) は、Global クラスが MainActivity によって初期化されなかったため、getData() が null (および isInitialized() が false ) を返すため、例外が発生します。
では、予期しない例外のようなものが発生した場合、グローバル クラスのような静的メンバーを持つオブジェクトを割り当て解除/クリアすることはできますか?