0

サービスの適切な実装を示すサンプル コードまたは例が必要です。一定時間後、たとえば 3 ~ 4 時間後にコードを実行したい。プロセスはバックグラウンドで実行され、デバイスも再起動されます。

bootrecieverオプションと を思いつきましたが、それを実装する方法や、実行中のプロセスに関数を実行して、間隔を置いて何度も実行するboot_completed方法が本当にわかりません。async

マニフェスト

<service
            android:name=".Myservice"
            android:label="My Service" >
            <intent-filter>
                <action android:name="com.app.ader.Myservice" />
            </intent-filter>
        </service>


        <receiver android:name="com.app.ader.StartMyServiceAtBootReceiver">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver>

Myservice.java

public class Myservice extends Service {

    String tag="TestService";
       @Override
       public void onCreate() {
           super.onCreate();
           Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();      
           Log.i(tag, "Service created...");
       }

       @Override
       public void onStart(Intent intent, int startId) {      
           super.onStart(intent, startId);  
           Log.i(tag, "Service started...");
       }
       @Override
       public void onDestroy() {
           super.onDestroy();
           Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
       }

       @Override
       public IBinder onBind(Intent intent) {
           return null;
       }
    }

StartMyServiceAtBootReceiver.java

public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent(context, Myservice.class);
        context.startService(startServiceIntent);
    }
}

私のサービスは起動後に実行されています...しかし、アプリケーションのインストール後にサービスを実行する必要さえあります。その nd とアラーム マネージャーを実装する方法がわからない???3 ~ 4 時間の間隔

4

2 に答える 2

0

1)あなたの要素で:

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

2) 要素内 (BroadcastReceiver の完全修飾 [または相対] クラス名を必ず使用してください):

<receiver android:name="com.example.MyBroadcastReceiver">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver>

MyBroadcastReceiver.java で:

package com.example;

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent(context, MyService.class);
        startServiceIntent.addaction("com.app.ader.Myservice");
        context.startService(startServiceIntent);
    }
}

3) サービス内で、Service OnStart() で Alarmmanager を開始します。

于 2013-11-14T06:21:02.037 に答える