このブログを検索

2012年9月17日月曜日

[Android]ProcessとTaskに関して

Androidにおいて、現在表示されているアプリを取得したいと思い、Processに関して調べました。

結論から言うと、getRunningTasks(int n)を使います。

調べてみたところ、プロセス関連では、

ActivityManagerからgetRunningTasks(int)を使うものと

getRunningAppProcesses()を使うものがあるということです。

getRunningTasks(int)は指定数を最大数として、runningのタスクを取得することができます。

詳細説明は こちら のブログより参考にさせていただきました。

これでバックグラウンドにて動いているものも含め、Activityが取得できます。

(SH-12CとGalaxyS2で試したところ、ホーム画面も検出する模様。)

 これで先頭の物が現在表示されているアプリである。





ちなみにgetRunningAppProcesses()は現在動いているProcessの一覧を取得しているものと思われます。

取得できる項目は リファレンス 参照。

気になる項目としては、「pid」「processName」「importance」があります。

pid:プロセスの固有ID
processName:プロセス名
importance:状態

特にimportanceはそのプロセスがどのような状態かを表し、なかなか有用です。

たとえばimportanceが

100:動作中のアプリケーション
300:動作中のサービス
400:バックグラウンドにいるアプリケーション

みたいな感じで、状態を区別できます。

あとは英語ができないのでよくわかりません。

サービスも含めて動作中のProcess等詳細に調べたい場合はこちらのが有用でしょう。




最後に、 サービスで動作し、接近センサーをトリガーとして、プロセスの出力を確認する

アプリを創りました。どんなものが出力されるか観察できます。

観測データはSDカード内部にCSVで保存されます。

EXCELで適当にさばいてください。

ソースコードは こちら より。

ソースのみlayoutファイルは含みません。

サービスの起動停止を行うonClickのついたボタンを適当に2つおいてください。

2012年7月21日土曜日

不定期にもほどがあるブログですが、たまには記載。


現在Androidアプリ開発を好んで行っております。弥太郎です。


なんとなく、業務で利用しているToDoListを公開してみます。


Excel2007以降で動作します。


別に大したものではないですが、どうぞ。


ToDoList.xlsx