0

サービスを自動開始するためのこのコードがあります。alarmmanagerが60秒待機すると、AlarmON.classが実行されると思いますが、そうではありません。エラーはどこにありますか?

再起動すると、「サービスが作成されました」と「サービスが開始されました」の両方のトーストが表示されます。

助けてくれてありがとう!

public class AutoStart extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
    Intent serviceIntent = new Intent();
    serviceIntent.setAction("com.example.startatboot.UnUsedService");
    context.startService(serviceIntent);
    }
}

およびサービス:

public class UnUsedService extends Service {
private PendingIntent pendingIntent;

@Override
public IBinder onBind(Intent intent) {
return null; 
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();

}

@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();

Intent myIntent = new Intent(UnUsedService.this, AlarmON.class);
pendingIntent = PendingIntent.getService(UnUsedService.this, 0, myIntent, 0);

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

     Calendar calendar = Calendar.getInstance();
     calendar.setTimeInMillis(System.currentTimeMillis());
     calendar.add(Calendar.SECOND, 60);
     alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),    pendingIntent);

Toast.makeText(UnUsedService.this, "Start Alarm", Toast.LENGTH_LONG).show();
}};
4

1 に答える 1

0

電話する必要はありません

calendar.setTimeInMillis(System.currentTimeMillis());

なぜなら...

Calendar calendar = Calendar.getInstance(); does the same thing.

それは、現在の時刻を教えてから、現在の時刻を現在の時刻に設定すると言っているようなものです。

また、コードを onStart から onCreate に移動してみてください。Android がサービスに対して onStart を呼び出さないという問題を見てきました。

あなたのコメントに基づいて、投稿を編集しました。

マニフェストに AlarmON サービスが登録されていますか? たとえば、アプリケーション セクションでは次のようになります。

<service
    android:name=".AlarmON"
    android:label="@string/service_name" >
</service>
于 2012-12-12T21:21:03.463 に答える