初期化済みの情報の保存と復元
初期化の際に作成した ThingIFAPI
のインスタンスが失われないよう、SDK では 2 通りの方法による保存と復元をサポートしています。
プロセス再起動時の保存と復元
アプリケーションがバックグラウンドに遷移したり言語設定が変更された場合に、アプリケーションや Activity などのインスタンスが Android のシステムによって再生成されます。その際に初期化処理で取得した ThingIFAPI
のインスタンスは失われます。
Activity などが再生成される際に Thing-IF SDK に関する情報を復元させるには、アプリの側でインスタンスを Bundle に保存します。Activity に用意されている Activity#onSaveInstanceState
内で ThingIFAPI
が実装している Parcelable
インターフェイスを利用して、これらを保存してください。情報を復元するには、Activity#onCreate
メソッドで復元処理を行ってください。
情報を保存・復元する例を以下に挙げます。
public class AppActivity extends Activity {
private static final String BUNDLE_KEY_THING_IF_API = "ThingIFAPI";
private ThingIFAPI mApi = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// Restore a Thing-IF API.
mApi = savedInstanceState.getParcelable(BUNDLE_KEY_THING_IF_API);
}
setContentView(R.layout.activity_second);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save a Thing-IF API.
outState.putParcelable(BUNDLE_KEY_THING_IF_API, mApi);
}
}
Bundle のキー名はモバイルアプリの仕様に合わせて自由に変更できます。
上記の例では Activity#onCreate
で復元していますが、Activity#onRestoreInstanceState
で復元することも可能です。
なお、アクティビティのライフサイクルについては Google によるこちらのドキュメント を参照してください。
ストレージへのシリアライズ
作成した ThingIFAPI
のインスタンスを長期間にわたって保存したい場合、ストレージ(Android の SharedPreferences)へのシリアライズ機能を利用できます。
ストレージへの保存は SDK によって自動的に行われます。
プロセスの再起動時、読み込みは以下のように行います。
try {
// Load a Thing-IF API.
ThingIFAPI api = ThingIFAPI.loadFromStoredInstance(getApplicationContext());
} catch (StoredThingIFAPIInstanceNotFoundException e) {
// Handle the error.
}
タグを指定して複数インスタンスを作成していた場合、loadFromStoredInstance
メソッドの第 2 引数にタグ名を追加して、指定されたタグの ThingIFAPI
を復元することもできます。タグについては、初期化処理 をご覧ください。
removeStoredInstance
メソッドによって保存されているインスタンスを削除することもできます。これら API の詳細については Javadoc を参照してください。
SharedPreferences へは ThingIFAPI_INSTANCE
または ThingIFAPI_INSTANCE_タグ名
をキー名として値を保存します。これらのキー名で保存されている情報は上書きされます。