ハマったので覚書。
TL;DR
Activity#finish() で最後のアクティビティを終了させても、アプリがタスク一覧に残ってしまう。APIレベル21からは Activity#finishAndRemoveTask() というメソッドがあるので、これを呼ぶ。
経緯
Android でアプリを終了させようと思って Activity#finish() を呼んだのですが、アクティビティは画面から消えるものの、タスクが消えない。つまり端末の □ ボタンを押すとタスク一覧に空の画面が出っぱなしになります。
んで、ググってみると 「Activity finish does not work」 とか 「android アクティビティ finish 終了しない」で、たくさんワークアラウンドが出て来るので思わず読みふける。むむ、なにプロセスが onDestroy 後も残るとな...。
結局
APIレベル21 からは Activity#finishAndRemoveTask() というメソッドがあるので、こいつを呼ぶのが正解なのでした。
検索結果に捕らわれて小1時間ハマりました...。