「設定」アプリのソースコードを調べてみませんか。
私のNexus 4では、「設定」->「アプリ」->「実行中」は以下のようになっています。

始める前に、Android プロセスの重要度の階層には 5 つのレベルがあります。 これらは
1) フォアグラウンド プロセス、
2) 可視プロセス、
3) サービス プロセス、
4) バックグラウンド プロセス、
5) 空のプロセス
詳細については、Android デベロッパー サイトの「プロセスとスレッド」ドキュメントを参照してください。
コードを調べたところ、「SHOW CACHED PROCESSES」は、重要度階層が「バックグラウンドプロセス」以下のプロセスを示していることがわかりました。一方、「SHOW RUNNING SERVICES」は、重要度階層が「見えるプロセス」以上のものを表示します。要点を明確に示すために詳細を省略しました。この部分の完全なソース コードは、ここで確認できます。
try {
final int numProc = mAllProcessItems.size();
int[] pids = new int[numProc];
for (int i=0; i<numProc; i++) {
pids[i] = mAllProcessItems.get(i).mPid;
}
...
for (int i=0; i<pids.length; i++) {
ProcessItem proc = mAllProcessItems.get(i);
changed |= proc.updateSize(context, pss[i], mSequence);
if (proc.mCurSeq == mSequence) {
serviceProcessMemory += proc.mSize;
} else if (proc.mRunningProcessInfo.importance >=
ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
backgroundProcessMemory += proc.mSize;
MergedItem mergedItem;
if (newBackgroundItems != null) {
mergedItem = proc.mMergedItem = new MergedItem(proc.mUserId);
proc.mMergedItem.mProcess = proc;
diffUsers |= mergedItem.mUserId != mMyUserId;
newBackgroundItems.add(mergedItem);
} else {
...
}
...
} else if (proc.mRunningProcessInfo.importance <=
ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
foregroundProcessMemory += proc.mSize;
}
}
} catch (RemoteException e) {
}
では、質問に戻りますが、
デスクトップ/ラップトップのように「ディスク」に切り替えるのではなく、メモリ内に残っていますよね?
はい、それらはまだメモリ内にありますが、最終的に Android システムは古いプロセスを削除して、新しいプロセスまたはより重要なプロセスのためにメモリを再利用する必要がある場合があります。保持するプロセスと強制終了するプロセスを決定するために、システムは各プロセスを「重要度階層」に配置します。
ユーザーがこれらの「キャッシュされたバックグラウンド プロセス」の 1 つをタップすると、実行中のプロセスのように、まだメモリ内にあるためすぐに表示されますよね?
そうですね。たとえば、「空のプロセス」を維持する唯一の理由は、次にコンポーネントを実行する必要があるときの起動時間を改善することです。
アプリケーションを「キャッシュ」するとき、Android は何をしますか?
私の知る限り、プロセスを強制終了せず、リソースを保持して、ユーザーが戻ってきたときにすぐに応答できるようにします。