などと言い出して困る。

ダイアログ上の「3D 表示モードを変更」をクリックしたら、その広告サイトに飛ばされて、新手のインチキ誘導広告かと思いました。
よくみると、上のほうにリンクがあったが、以下にて「表示方法」というやつを変えればよし、と。

などと言い出して困る。

ダイアログ上の「3D 表示モードを変更」をクリックしたら、その広告サイトに飛ばされて、新手のインチキ誘導広告かと思いました。
よくみると、上のほうにリンクがあったが、以下にて「表示方法」というやつを変えればよし、と。

OS起動時に、設定したアプリを自動起動する「ログイン項目」。
システム環境設定>ユーザとグループ>ログイン項目

ここに登録設定していたアプリがOS起動時に起動されず、上の画像のリストに保存されずに消えていた。
いくつか、対応方法はあるようです。
ログイン項目がすべて消える | Apple サポートコミュニティ
とりあえずトラブルシューティング | Apple サポートコミュニティ
他にもいくつか対処法を書いているページはありましたが、大体この2つの方法です。
OSがらみの設定ファイルを手動で削除するのはなんとなくいやなので、2つ目の方法でやってみました。

AsyncTaskLoader | Android Developers
1. Thread と AsyncTask
2. AsyncTaskLoader の利点
3. LoaderManager の利用
4. よくある間違いと回避法
5. 基本的な Loader の実装
6. いろいろな Loader の使用例
7. データベースと CursorLoader
8. Loader の弱点を克服する
1. 進捗状況(progress)の更新ができない。
対応策:
LocalBroadcastManager を使う。
Activity 側。
@Override
protected void onStart() {
// Receive loading status broadcasts in order to update the progress bar
LocalBroadcastManager.getInstance(this)
.registerReceiver(loadingStatusReceiver, new IntentFilter(MyLoader.LOADING_ACTION));
super.onStart();
}
@Override
protected void onStop() {
super.onStop();
LocalBroadcastManager.getInstance(this).unregisterReceiver(loadingStatusReceiver);
}
Loader 側。
@Override
public Result loadInBackground() {
// Show progress bar
Intent intent = new Intent(LOADING_ACTION).putExtra(LOADING_EXTRA, true);
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
try {
return doStuff();
} finally {
// Hide progress bar
intent = new Intent(LOADING_ACTION).putExtra(LOADING_EXTRA, false);
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
}
}

AsyncTaskLoader | Android Developers
1. Thread と AsyncTask
2. AsyncTaskLoader の利点
3. LoaderManager の利用
4. よくある間違いと回避法
5. 基本的な Loader の実装
6. いろいろな Loader の使用例
7. データベースと CursorLoader
8. Loader の弱点を克服する
CursorLoader は ContentProviders 照会専用のローダです
結果としてデータベースカーソルを返す。
AsyncTaskLoaderを継承したバックグランドスレッドでデータベースクエリーを実行します。
Acitivityのライフサイクルに応じて、Activity.startManagingCursor(Cursor c) やカーソルのライフサイクルの管理を置き換えます。
→ close() は呼ばない。
データベースを監視し、データが変更された新しいカーソルを返します。
→ requery() は呼ばない。
ListFragment内 CursorAdapterでの使い方
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new BookmarksLoader(getActivity(),
args.getDouble("latitude"), args.getDouble("longitude"));
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
adapter.swapCursor(data);
// The list should now be shown.
if (isResumed()) {
setListShown(true);
} else {
setListShownNoAnimation(true);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}

AsyncTaskLoader | Android Developers
1. Thread と AsyncTask
2. AsyncTaskLoader の利点
3. LoaderManager の利用
4. よくある間違いと回避法
5. 基本的な Loader の実装
6. いろいろな Loader の使用例
7. データベースと CursorLoader
8. Loader の弱点を克服する
代わりにグローバルなキャッシュ利用する
public abstract class GlobalCacheLoader<T> extends AsyncTaskLoader<T> {
...
@Override
protected void onStartLoading() {
T cachedResult = getCachedResult();
if (cachedResult != null) {
// 結果が利用可能であればすぐに配送
deliverResult(cachedResult);
}
if (takeContentChanged() || cachedResult == null) {
// 最終読み込み時のデータが変更されているか、
// または、利用不可(null)の場合
forceLoad();
}
}
...
protected abstract T getCachedResult();
}
データ監視部分
* onContentChanged()
Loader が開始されていたら forceLoad()、停止していたら フラグをセット。
* takeContentChanged()
フラグの値を返して、クリアする。
@Override
protected void onStartLoading() {
if (mResult != null) {
deliverResult(mResult);
}
if (takeContentChanged() || mResult == null) {
forceLoad();
}
}