检查警报运行无法正常运行

时间:2014-02-08 11:00:19

标签: android android-actionbar action

我的闹钟在我的广播接收器中调用onReceive()。

public class MainActivity extends ActionBarActivity {

private Button bLoggOut, bStartTracking, bStop;
final private static String myAction = "com.brucemax.MY_ALARM_OCCURED";
Context ctx;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ctx = this;
    setContentView(R.layout.activity_main);

    Log.d("myTag", "Alarm set "+String.valueOf(isAlarmSet()));

    bStartTracking = (Button) findViewById(R.id.bStartTracking);
    bStartTracking.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(myAction);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(ContextHolder.getAppContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) ctx.getSystemService(ALARM_SERVICE);
            alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, 0/*updateTime.getTimeInMillis()*/, 5 * 1000, pendingIntent);
        }
    });

    bStop = (Button) findViewById(R.id.bStop);
    bStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            canselSetWakeUpMode();
        }
    });

}

public void canselSetWakeUpMode() {
    Log.d("myTag", "MainActivity canselSetWakeUpMode()");
    Intent myAlarm = new Intent(myAction);
    // myAlarm.putExtra("project_id",project_id); //put the SAME extras
    PendingIntent recurringAlarm = PendingIntent.getBroadcast(ctx, 1, myAlarm, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager alarms = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
    alarms.cancel(recurringAlarm);
}

public boolean isAlarmSet() {
    Intent myAlarm = new Intent(myAction);
    return (PendingIntent.getBroadcast(ctx,1, myAlarm, PendingIntent.FLAG_NO_CREATE) != null) ;
}

           }

清单中的MyReciever:

    <receiver  android:name=".Service.StartServiseWakefulReceiver">
        <intent-filter>
            <action android:name="com.brucemax.MY_ALARM_OCCURED"/>
        </intent-filter>
    </receiver>

接收器:

public class StartServiseWakefulReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    // This is the Intent to deliver to our service.
    Intent service = new Intent(context, HandleLocationService.class);
    Log.d("myTag", "StartServiseWakefulReceiver onReceive()");
    // Start the service, keeping the device awake while it is launching.
    //Log.i("SimpleWakefulReceiver", "Starting service @ " + SystemClock.elapsedRealtime());
    startWakefulService(context, service);
}

}

这是工作。当我首先运行app时,isAlarmSet()为false。我开始惊慌,这是工作,然后我停止报警(它真的停止),关闭应用程序。但是当我再次启动app时,isAlarmSet()是真的!但惊慌失措却没有。为什么??? 此致!

0 个答案:

没有答案