> I am setting an alarm like thus:
>
>     AlarmManager mgr = (AlarmManager)
> activity.getSystemService(Context.ALARM_SERVICE);
>     mgr.setRepeating( AlarmManager.RTC_WAKEUP, msecs, INTERVAL_MSECS,
> pendingIntent );
>
> to go off at 3am in the morning.
>
> the alarm gets caught by a broadcast receiver.  in the onReceive
> method of the broadcast receiver, I am acquiring a wakelock and
> starting a service.
>
>     @Override
>     public void onReceive(Context context, Intent intent) {
>         PowerManager mgr = (PowerManager)
> context.getSystemService(Context.POWER_SERVICE);
>         lock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
> WAKELOCK_NAME);
>         ...
>         context.startService(new Intent(context, MyService.class));

Depending on where 'lock' is defined and when you're releasing the lock,
that may not work.

> in my service I am trying to start my app --
>     @Override
>     public void onStart(Intent intent, final int startId) {
>         super.onStart(intent, startId);
>         Intent intentStartMyActivity = new Intent(Intent.ACTION_MAIN);
>         intentStartMyActivity.putExtra("com.test.main", true);
>         startActivity( intentStartMyActivity );

Why not just start the activity from the BroadcastReceiver? What's the
point of the service?

And I really hope that this is either an alarm clock app or you make this
configurable, as users may not appreciate an activity spontaneously
starting up triggered by some background operation.

> I have some additional logging my start activity and discovered that
> sometimes this works and sometimes it doesn't.  It will work like 4
> nights in a row and then on the 5th night, it won't work, and then it
> will work three more times after that.  Any ideas on why it might
> 'sometimes' not work?

WakeLocks are tricky beasts. I spend a few pages in a book trying to
explain how to handle this pattern well. I can't tell whether your code is
OK, because it's missing some key pieces, like where 'lock' is declared
and when you're releasing the WakeLock.

I have the pattern wrapped up in a reusable component, though it is very
much not designed for use with an activity:

http://github.com/commonsguy/cwac-wakeful

You could take a peek at the code (it's not that big) and example to see
how to apply it in your app.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com
Android App Developer Books: http://commonsware.com/books.html


-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to