2013年4月4日木曜日

[WaitcancelHome]ギギギ・・・


くっそう。
答え出ました。

アプリ起動履歴ボタンはその時最全面のActivity(画面)をベースに実行されています。多分。
WaitCancelHomeからは指定のホームアプリを履歴に追加しないようにしています。

ただ、この履歴が曲者です。
Androidなので、すべての端末でそうなのかはわからないけど、少なくとも僕の端末では「今最前面のアプリは履歴に追加しない設定でも履歴に表示される」という状況です。

たとえば、SwipeStarterはマーカーをよく使うという理由から履歴に表示しないように設定しています。
これをしておかないと、常に最前面に表示されちゃうから。
でも、たとえば設定画面表示したり、フォルダやウィジェットを表示している最中に履歴ボタンを押した場合、起動履歴にSwipeStarterが表示されると思います。
なので、「おそらく」アクティビティ終了(移動)時に今自分が動いていたという証拠を消し去ってから終了→ひひひってことをやっているんだと思います。

で、これが現在常時利用に設定されているホームアプリだけは別で、そもそも履歴に残らないようになっているんだと思います。
そりゃ、ホームだから常に出てきちゃうからね。

で、今回の件。
WaitCancelHomeはデフォルトホームに設定してホームボタン押下を検知する必要があります。
ホームアプリを作る気はないし、ほかの高機能なホームアプリには絶対負けるので、ほかのホームアプリを「中継」するという形をとっています。
この時、履歴に追加しない設定で指定されたホームアプリを起動するように修正したんだけど、これだけではどうにもできないことがありました。

ホームボタンを押して指定したホームを中継表示→デフォルトホームじゃないホームが最前面に表示されている→起動履歴に指定したホームが表示

そもそも、この標準履歴画面、自分(最前面)は表示しなくてもいいんじゃないかっていう気もするが、多分最前面を取得する仕組みがちょろいんだと思う。
だから、最前面を履歴から消せないんじゃないかなぁ。

Androidには履歴とタスクとプロセスってのがあって、これのどれか一つだけでは最前面は取得できません。
履歴:履歴に残さない設定が出来るので信憑性に欠ける
タスク:起動中のタスクを取得出来るけど、ちょっと余計なものまで含まれる(電話とか)
プロセス:単純にプロセスを取得するだけなので順番とかは関係ない。。かな?プロセス名は1アプリで複数設定可能だし。

すみません。
まだ僕もこの辺理解が足りないんだけど、要はちゃんと最前面が取れないって事。
SwipeStarterで指定アプリ実行中のマーカーOFFから(仮)が取れないのはこの辺の問題。

Android標準の機能なので、現状の解決策はありません。
履歴ボタン押下のインテントがあればそっちもWaitCancelHomeで中継しちゃえっ!と思ったんだけど、まだないみたいです。

開発者が実装しなくていい機能だから、開発者が実装できないようにしてるって感じかなぁ。
もっと有能な履歴アプリを起動できるようにしてあげた方がAndroid本体としても楽じゃない?なんて思うのは俺だけか。

危ないのかな。起動履歴を弄れるのって。
裏で起動しているけど起動していない事に出来る・・・・いや、そもそも履歴から除外できるし。
何だろう。

チョットグダグダしましたけど、現状出来ないって事で。

纏めると

■今回の対応で出来たこと
 指定したホーム以外のアプリ起動中の履歴から選択したホームを除去
 
■今回の対応で出来なかったこと(また、現状どうしようもないこと)
 指定されたホーム表示時にホームが履歴に表示される

メールでご報告いただいた方にはこのような感じの回答をして納得していただきました。
個人的には、ホームで全履歴消したら「起動履歴はありません」が出てほしいんですけどね。
がっくし。

精進しますか。

という報告です。
ご理解ください。

0 件のコメント:

コメントを投稿