App Inventor可以寫背景服務了

App Inventor 從發佈以來只能作為一個app(Android的 activity),代表它只能在前景(foreground) 執行,如果您按下 home / return 切換到其他程式的話,就會依照 activity 本身的生命週期被停止並被回收記憶體。

但如果我們希望AI2可在背景(background)的方式來執行,這需要把AI2的專案變成一個service,在本篇文之前是做不到的

目前AI2的 service 功能還在測試中,並多了兩個新元件:
  • NotificationComponent
  • AppicationManager

請由此站登入:

Designer - Screen1

請新增兩個Button就好,這兩個按鈕分別用來啟動/停止 task。

Blocks - Screen1

兩個按鈕的Click事件分別呼叫了 Screen 的 StartTask 與 StopTask指令,請指名所要啟動的 task 就好。也會在螢幕狀態列顯示相關訊息。

Designer - Task1

請點擊工具列的 Add Task... 來新增一個背景服務。


完成之後就可以由此選單來切換到 Task1


由此可以看到,Task1無法使用任何視覺元件,在此請新增一個Clock與 NotificationComponent (負責推播訊息)


Beginner - Task1

從Screen1啟動Task1之後,會呼叫Task1.TakStarted事件,

在Clock.Timer中,會定期(我們設定為10秒) 發出通知 (LaunchNotification),您可以自由指定 title 與 text



執行時,請點選主畫面的[背景服務開始]按鈕,接著可以按下手機 home 鍵,如看到如下圖的通知(使用 Genymotion 模擬器截圖) 代表背景服務正確啟動。點選主畫面的[背景服務結束]按鈕即可結束 Task1。





Comments