AsyncTaskを触っているときに、LoaderManagerがdeprecatedされたということでメモ。
正直わかってないですが、とりあえずアウトプットします。
以下のようにすると、AndroidStudioに怒られてしまいます。
private LoaderManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager = getSupportLoaderManager();// ← 非推奨
~~getSupportLoaderManager()~~と打消し線されちゃいます。
だからといって、動かないわけではありません。動きはします。
しかし少し気になるので、公式ドキュメントを読みました。
2つ方法がありそうです。
1、getInstance()を使う。
2、initLoader()を使う。
1、はそのまんまですね。インスタンスがほしいので、getします。
Gets a LoaderManager associated with the given owner, such as a FragmentActivity or Fragment.
とのことです。
2、はLoaderを始めちゃうってことですね。
If the loader doesn't already exist, one is created and (if the activity/fragment is currently started) starts the loader. Otherwise the last created loader is re-used.
もしなかったら作ってくれるし、既にあるなら再利用しますよと言っています。
LoaderManagerはActivityやFragmentの一つに一つ割り当てられていることからもわかります。
がしかし、そもそも
Your activity must derive from FragmentActivity to use this.
なので、FragmentActivityを継承させれば良い、ということになりますが、
他で使いたくなったらどうするんだろう、という疑問は解消されていません。