0

次のコードは、時間の設定 (ボタンのクリック) から 10000 ミリ秒後にアラームを開始する必要があります..しかし、AlarmManagerボタンをクリックした直後にサービスが開始されるのはなぜですか? パッケージpit.opensource.notificationapp;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class NotificationAppActivity extends Activity {

    private PendingIntent pendingIntent;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button buttonStart = (Button)findViewById(R.id.btnset);

        buttonStart.setOnClickListener(new Button.OnClickListener(){

            @Override

            public void onClick(View arg0) {

                setAlarm();
                //setAlarm(25);

            }});

    }

    void setAlarm(){

        Intent myIntent = new Intent(NotificationAppActivity.this, ShowNotification.class);
        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

        alarmManager.cancel(pendingIntent);

        pendingIntent = PendingIntent.getService(NotificationAppActivity.this, 445454, myIntent, 0);



        //alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis()-cal2.getTimeInMillis(), pendingIntent);
        alarmManager.set(AlarmManager.RTC_WAKEUP, 10000, pendingIntent);


    }

}

ShowNotification サービス

package pit.opensource.notificationapp;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

public class ShowNotification extends Service {

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
    }
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show();
    }
    @Override
    public void onStart(Intent intent, int startId) {
        // TODO Auto-generated method stub
        super.onStart(intent, startId);
        Toast.makeText(this, "Alaaaaaaaaaarm ", Toast.LENGTH_LONG).show();
        Log.d("Aalram","Alaaaaaaaaaarm");

    }

}
4

1 に答える 1

13

2 番目のパラメーターは、 nowに対する遅延ではなく、アラームが鳴る時間です。のようなものを使用しますSystem.currentTimeMillis() + 10000。過去の開始時刻を過ぎているため、すぐに消えます。

于 2012-05-28T02:29:57.660 に答える