私はバックグラウンド(基本的にはプロキシサーバー)で動作し続けるservice
のコンポーネントを持つアプリケーションを作成していますが、そのサービスの開始方法を見つけることができません。アプリケーションはUIやユーザーのやりとりを持つことができないので、私はアクティビティを使用していません。
Broadcast receiver
はBOOTブロードキャストを聞くことができますが、インストールされて初めてサービスを開始するにはどうすればいいですか? アプリがインストールされた後に聞くことができるブロードキャストがあります。 TIME_TICKかもしれませんが、それは私が考える活動から登録しなければなりません。サービスのみAndroidアプリを起動する方法
答えて
申し訳ありませんが、今すぐアプリケーションがインストールされた後にブロードキャストイベントを受信する信頼できる方法はありません。ACTION_PACKAGE_ADDEDインテントは新しくインストールされたパッケージにブロードキャストしません。
ACTION_BOOT_COMPLETEDイベントを受信するには、ブロードキャスト受信機クラスとサービスが必要です。また、ブロードキャストレシーバーで捕まえる予定のACTION_USER_PRESENTを追加することをお勧めします。これにはAndroid 1.5(minSDK = 3)が必要です。ユーザーが携帯電話のロックを解除するたびにブロードキャスト受信機を呼び出します。サービスが自動的にシャットダウンされることなくサービスを継続できるようにするために最後に行うことは、サービスでService.setForeground()に電話することです。サービスを停止しないことをAndroidに指示するため、これは主にmp3プレーヤータイプサービスは継続していなければなりませんが、どのサービスでも使用できます。
マニフェストでboot_completeイベントとuser_presentイベントに適切な権限を追加してください。
イベントのブロードキャスト受信者として使用できるシンプルなクラスです。
package com.snctln.util.WeatherStatus;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class WeatherStatusServiceReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction() != null)
{
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) ||
intent.getAction().equals(Intent.ACTION_USER_PRESENT))
{
context.startService(new Intent(context, WeatherStatusService.class));
}
}
}
};
幸運。
良いアドバイス。 Service.setForeground()についての1つのこと:Android 2.0以降では動作しません。すべての「長寿命の」サービスは、実行中に通知領域に永続的な通知が必要です。例:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.html –
ACTION_USER_PRESENTはすばらしいヒントです。私は長年にわたって私のサービスを生かし続けることに苦労してきましたが、これで解決しました。 – defrex
これはAndroid 4.0.xではうまく動作していないようです。 – ubuntudroid
戻りSTART_STICKY
Service.onStartCommand
にAndroidのは、私は同じ問題を研究していますあなたのサービス
START_STICKYはAndroid 2.0+ – cow
にのみ有効ですが、継続性を得るには少なくとも1回はサービスを実行する必要がありますか? –
を再起動します。ここで私が見つけた何をされます: http://kfb-android.blogspot.de/2009/04/registering-for-timetick-after-reboot.html
は単純で小さなデモはBroadcatReceiver
とService
の間でピンポンの少しを再生して解決策を示すこと。受信者は、ACTION_BOOT_COMPLETED
を受信するマニフェストに登録することによって起動時に開始するように登録されています。 ACTION_BOOT_COMPLETED
を受信するとサービスが開始されます。 Service
はBroadcastReceiver
を登録し、次にACTION_TIME_TICK
を登録します。
アプリケーションロジックはBroadcastReceiver
に実装されます。
- 1. Android 2.2:起動時に自動的に起動する方法と、別のアプリを起動させる方法
- 2. Androidアプリの起動イメージを指定する方法
- 3. URLからAndroidアプリを起動する方法について
- 4. RabbitMQサービスを再起動する方法
- 5. Windowsサービスを起動する方法
- 6. アプリを起動する方法
- 7. 起動時にサービス( `IServiceCollection`)を起動する方法
- 8. Androidサービスの起動順序
- 9. アプリのアップグレード後のAndroidサービスと再起動
- 10. iPhoneアプリから別のアプリを起動する方法
- 11. アプリの起動時にAndroidサービスを起動するにはどうすればよいですか?
- 12. Air for Androidスタンドアローンで起動するアプリ
- 13. iphoneアプリから外部アプリ(NDrive)を起動する方法
- 14. Android app携帯電話の起動時にサービスを開始する方法
- 15. Androidサービスを再起動しますか?
- 16. アプリの起動が完了したら起動イメージをアニメーション化する方法
- 17. Androidの自動起動アクティビティ(アプリが2回起動)
- 18. EclipseプラットフォームでOSGiサービスを自動起動/開始する方法
- 19. サービスを2回起動しないようにする方法android
- 20. サービスとしてのLocationManagerの起動Android
- 21. 再起動時のAndroidアプリのエラー
- 22. Androidアプリの起動アイコンのサイズ
- 23. Android - 起動時にサービスを開始
- 24. 起動時にサービスを起動しますが、Androidアプリ全体ではありません
- 25. Android起動アプリの内部ビュー
- 26. JBossサービス(JmsActivation)の起動シーケンスを設定する方法
- 27. ドッカーコンテナの起動時にサービスを実行する方法
- 28. クライアントシステムのWindowsサービスをサーバーシステムから起動する方法は?
- 29. アプリから特定のiBookを起動する方法は?
- 30. プログラムでコマンドラインからアプリのコマンドラインバージョンを起動する方法は?
私自身はこれを試していませんが、Applicationオブジェクトからサービスを開始することは可能でしょうか? – phreed
私はそれが動作すると思うhttp://android-codes-examples.blogspot.com/2011/11/running-service-in-background-on.html – Android