大家好!這篇要介紹有關於如何設計訂定時間的方式,也就是所謂的定時設計
。那麼要實現定時狀態是否要讓App保持在畫面最前端,因為很多時候App處於關閉狀態時,App資源就已經被釋放,App就沒辦法與使用者作互動,由於這個緣故我們就要來一起學習,如何在App關閉時,仍然可以提醒使用者或是在使用者操作其他App時可以發送通知提醒使用者。
將製作timealarm.xml版面配置檔案以供使用者設定提醒時間
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TimeAlarmActivity">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtDay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="請輸入日期" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtHour"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="請輸入小時" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtMin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="請輸入分鐘" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/btnNotify"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="設定"
android:onClick="btnNotify"/>
</LinearLayout>
TextInputEditText
搭配TextInputLayout
提供更好的使用者體驗
tools:context=".TimeAlarmActivity"
不要將context誤設為MainActivity喔 ,不然android:onClick="btnNotify"
可能會找不到應該偵聽的觸發事件
AlarmManager官方文件指出AlarmManager是一個類別可以提供alarm的背景服務。
This class provides access to the system alarm services.
只要alarm廣播接收執行,那麼Alarm Manager就可以持有CPU的wake lock。
The Alarm Manager holds a CPU wake lock as long as the alarm receiver's onReceive() method is executing.
不論你的應用程式是否執行,AlarmManager提供一個你所設定的時間,執行程式服務。
The Alarm Manager is intended for cases where you want to have your application code run at a specific time, even if your application is not currently running.
總而言之,AlarmManager可以在特定時間執行開發者所設計的程式流程,由於onReceive()在後台等待接收指令,所以不論應用程式是否啟動,都能夠執行app內的程式。
這篇先為大家介紹AlarmManager,下篇再分享AlarmManager實作方式
若文章有誤,歡迎大家提出建議。
Thank you for your time.