0

Service Component を使用するサービスを作成しています。アプリケーションを常にバックグラウンドで実行したいと考えています。モバイルの電源を切り、モバイルでアプリケーションが自動的に閉じられるとします。

このコードを試しています

androidManifest.xml

<receiver android:name=".receiver.ConnectionReceiver">
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver>  

このコードをBroadCastreceiverクラスの 更新に追加します

private class ConnectionReceiver extends BroadcastReceiver{

        private Timer mTimer;
        private TimerTask mTimerTask;
        private long interval;

        @Override
        public void onReceive(Context context, Intent intent) {
             AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
             PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, ConnectionReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
             am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi); 
                {
                calGps();
                }
                }
4

2 に答える 2

0

マニフェストのアクセス許可エントリを追加する必要があります。

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

(もちろん、アプリが使用する他のすべてのアクセス許可をリストする必要があります)。

次に、BroadcastReceiver クラスを実装します。シンプルで高速に実行できるはずです。最善の方法は、このレシーバーにアラームを設定してサービスを起動することです (Prahast が書いたように、サービスを実行し続ける必要がない場合)。

public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}

次に、Receiver クラスをマニフェスト ファイルに追加します。

<receiver android:enabled="true" android:name=".receivers.BootUpReceiver"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>
于 2012-01-19T05:06:51.570 に答える
0

こんにちはリーマ・ローズ

デバイスの起動後にサービス/アクティビティを起動したい。以下のリンクをチェックして、BroadcastReceiver の使用方法を理解してください。

起動時にアプリケーションを自動起動する

起動時にサービスを開始

お役に立てば幸いです。

新しい答え:

<category android:name="android.intent.category.HOME" />受信者のマニフェスト ファイルのインテント フィルターに追加します。

于 2012-01-19T05:11:46.393 に答える