はじめに
現在私が開発しているAndroidアプリケーションでグローバル変数を利用したいときがあったので、今回のエントリでは、Androidでグローバル変数を扱う方法を備忘録として投稿します。
- android.app.Applicationを継承したクラスを作成
- AndroidManifest.xmlへ上記のクラスを追記
大まかな手順としては上記内容を実装することで対応できます。
具体的な手順については以下で説明していきます。
1. android.app.Applicationを継承したクラスを作成
まず、android.app.Applicationを継承したクラスを作成していきます。
android.app.Applicationの詳細については、リファレンスに記載されていますので、そちらを参照してください。
私もあまり詳しくないので間違っているかもしれませんが、大雑把に言ってしまうとアプリケーション全体の状態を管理するためのクラスのようです。ですので、アクティビティ間で使いたい共通変数(グローバル変数)などを定義するのに使われるようです。
以下では、android.app.Applicationを継承した UtilCommonクラスを作成し、グローバル変数として boolean型の変数を扱う例を載せています。
import android.app.Application;
import android.util.Log;
/**
* グローバル変数を扱うクラス
* Created by sample on 2016/11/18.
*/
public class UtilCommon extends Application {
private static final String TAG = "UtilCommon";
private boolean mGlobal; // boolean型のグローバル変数
/**
* アプリケーションの起動時に呼び出される
*/
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate");
mGlobal = false;
}
/**
* アプリケーション終了時に呼び出される
*/
@Override
public void onTerminate() {
super.onTerminate();
Log.d(TAG, "onTerminate");
mGlobal = false;
}
/**
* グローバル変数の値を変更
* @param global 変更する値
*/
public void setGlobal(boolean global) {
Log.d(TAG, "setGlobal");
mGlobal = scanFlag;
}
/**
* グローバル変数の値を取得
* @return グローバル変数(mGlobal)
*/
public boolean getGlobal() {
Log.d(TAG, "getGlobal");
return mGlobal;
}
}
2. AndroidManifest.xmlへ記述
続いて、AndroidManifest.xmlのApplication属性に以下を追記します。
android:name="UtilCommon"
リファレンスによると android:name属性に手順1で作成した、Applicationクラスのサブクラス UtilCommonを指定することで、アプリケーションのプロセスが作成されるときにインスタンス化されるようになるそうです。
・
・
・
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="${appName}"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name=".Util.UtilCommon">
・
・
・
</application>
・
・
・
3. おわりに
以上が Androidにてグローバル変数を利用するための手順です。
具体的にアクティビティでグローバル変数を利用するためには、以下のように記述する必要があります。
- アクティビティで最初に宣言(必須)
UtilCommon common = (UtilCommon)getApplication();
- グローバル変数の値を変更
common.setGlobal(true);
- グローバル変数の値を取得
common.getGlobal();
参考文献
- Application _ Android Developers, https://developer.android.com/reference/android/app/Application.html, Online; accessed 19-November-2016.
- [Android] グローバル変数を使ってActivity間でデータを渡す, https://akira-watson.com/android/global-val.html, Online; accessed 19-November-2016.
- Applicationクラスを継承して、データの共有をする。 « Tech Booster, http://techbooster.jpn.org/andriod/application/2353/, Online; accessed 19-November-2016.