Solution 1 :
If you are talking about a Digital clock , Android added a TextClock layout widget on API level 17 .
you can simply add it to your widget XML and it will automatically show the time.
<android.widget.TextClock android_id="@+id/clock" android_format24Hour="k:mm" android_format12Hour="k:mm" android_gravity="center" />
I actually just made (this week) an open source android digital clock widget , feel free to browse and use my code. pull requests will be much appreciated!
I’m sure it will be helpful to you since I stumbled a bunch of surprising walls on the way.
if you want anything other then a digital clock you will need to use an AlarmManager like you mentioned.
Solution 2 :
Make it tick only when the user is watching. So in onResume make it to current time and update it every minute or something, then in onPause stop updating it and kill the timer,handle,rxInterval or whatever you are using to update the view periodically.
I am looking at creating a clock widget that tell the current time but if the minimum time you can set for the widget is 15 minutes thats obviously not going to work.
I also see suggestions on using
AlarmManager but then I worry about the battery life.
I also see the intent action
Intent.ACTION_TIME_TICK that fires every minute and seems like what I want but as the documentation says
You cannot receive this through components declared in manifests, only
by explicitly registering
So that seems like its not going to work for a widget
So the question is, is there a “correct” way to build a clock widget that does not kill the battery and still updates the current time?
Comment posted by developer.android.com/guide/topics/appwidgets#CreatingLayout
That is not one of the supported view widgets that you can put in a home screen widget.
Comment posted by Joe
@tyczj well it sure works. tested on multiple devices and launchers.
Comment posted by tyczj
hmm interesting, I will give it a try then
Comment posted by Qtax
@Joe your widget looks great. It’s surprisingly difficult to find decent android stuff without ads, tracking, etc. I would suggest to publish it to F-Droid so that it’s easier to find for people who are looking for open source stuff. A thing I’m missing is for it to open the clock app on tap, and maybe showing next alarm and better handling of denying file access (as that breaks it completely). I will try to make a PR for that when I get the time.
Comment posted by tyczj
There is no onPause/onResume for a widget, tying a widget to an activity does not make sense because then the widget on the home screen will only update if the user opened the app so its not going to show the correct time