KeyTitaniumでAndroidのServiceをマニュアル通りにやっても動かなかったので、メモしておきます。Mobileから制御する方法について説明します。1.8.2で動作確認しています。Serviceを利用するにはJSに記述する以外にも、tieapp.xmlに追記する必要があります。</services></android>これは、myservice.jsというファイルに記述されたServiceを指定された間隔(interval)で起動する、という意味になります。tieapp.xmlにこれを指定すると、build/android/gen/APP_ID/MyServiceService.javaというファイルが生成されます。/>が追記されていれば成功です。APP_IDのところは実際には先ほどの生成されたJavaのファイルにも記述されているパッケージ名になります。/>のようになったことがありました。困ったことに、一度こうなるとそのまま変更されなくなってしまうようです。これでは当然動作しないので、一度ビルドしてbuild/android/AndroidManifest.xmlが作成されたら、プロジェクトディレクトリ直下にplatform/androidディレクトリを作成し、AndroidManifest.xmlをコピーします。PROJECT_HOME/platform/android/platform/android/AndroidManifest.xmlに記述された内容はtieapp.xmlの情報とマージされて、build/android/AndroidManifest.xml.genとなります。platform以下のXMLの方が優先されるみたいです。/>という行を追加します(しつこいようですが、APP_IDはパッケージ名です)。次に、myservice.jsを用意するわけですが、XMLの方には記述されていませんが設置するのはResources直下ではなく、Resources/android以下になります。起動時にデータを受け渡しする場合はintentにputExtraで指定することができます。Serviceは即時実行されますが、intervalを指定すると二度目以降は指定されたintervalの間隔(ミリ秒)で実行されます。service.stop();}これでログに文字列を出力するだけのServiceを作ることができました!最高のアプリです。バカ売れ間違い無しですね。Serviceの活躍する場面ですが、例えばここから起動中のアプリにfireEventで何か実行させたりすることができます。setIntervalとかsetTimeoutで動作を制御しようとすると、Androidの場合は画面スリープの制御が出来なかったりしていまいち信頼性が低いので、Serviceを起動してそこからコントロールするのがいいと思います。バックグランドで実行する位置情報の更新にも便利ですね。notificationの変わりにもなりそうです。Managerを呼び出して停止中のアプリを起動させたりすることができるともっと面白いことができるかもしれません。Managerを扱う仕組みがないので、これは別途モジュールで作成する必要があります。updateところが、Titanium製アプリでバックグランドでServiceを実行すると、Androidでホームボタンを押してアプリを閉じた場合は問題ないのですが、backボタンで閉じた場合はServiceがresumeしなくなることが判明しました。そこで、backボタンを押したときにホームボタンと同じ動作をするよう変更してみたところ、Serviceは無事動き続けました。});backボタンでアプリが閉じてしまうrootウィンドウにこんなイベントリスナを追加するとうまくいきました。Android開発でハマッたところを徒然なるままにまた日本語のアプリ名に出来なくなってる?。