【问题标题】:Why doesn't AlarmManager start immediately even 10000 milliseconds are set to it?为什么即使设置了 10000 毫秒,AlarmManager 也不会立即启动?
【发布时间】:2012-05-28 01:27:13
【问题描述】:

以下代码必须在设置时间(单击按钮)后 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");

    }

}

【问题讨论】:

    标签: android service notifications alarmmanager android-pendingintent


    【解决方案1】:

    第二个参数不是相对于now的延迟,而是警报应该响起的时间。使用类似System.currentTimeMillis() + 10000 的东西。它会立即熄灭,因为您正在过去一个开始时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2015-03-04
      • 2010-12-25
      • 1970-01-01
      相关资源
      最近更新 更多