創(chuàng)建Android系統(tǒng)步驟簡介
Android, OPhone OS作為手機(jī)開發(fā)的后起之秀, 肯定不會(huì)錯(cuò)過這份蛋糕的分享,現(xiàn)在我們就以ANDROID SDK 里面自帶的貪吃蛇作為例子, 去看看這個(gè)貪吃蛇是怎么去開發(fā)。
你可能會(huì)想你可以創(chuàng)建一個(gè)具有AppWidgetManager.ACTION_APPWIDGET_UPDATE的Intent對(duì)象,然后給特定的Widget標(biāo)識(shí)符設(shè)置額外的值接著你就可以通過調(diào)用AlarmManager的setRepeating()方法,采用調(diào)度機(jī)制反復(fù)地更新,遺憾的是,這種做法行不通,Android系統(tǒng)反復(fù)使用Intents匹配行為和方案值。
那些“額外的”值是不會(huì)拿去對(duì)比的。實(shí)際上,解決方案非常簡單:首先為你的Widget定義一個(gè)方案,然后用它定義唯一的Intent實(shí)例。下面的代碼片段顯示如何實(shí)現(xiàn)這個(gè)目標(biāo)。
在ImagesWidgetConfiguration Activity中你會(huì)發(fā)現(xiàn)前面的代碼,manifest文件顯示塊處理這個(gè)特定的scheme。你也需要在AppWidgetProvider接口的onDeleted()方法內(nèi)停止重復(fù)的警報(bào)。最后,當(dāng)手機(jī)重啟后,更新調(diào)度也必須重啟。
在AppWidgetProvider的onReceive()方法內(nèi)提供了一個(gè)簡單的解決方案,首先,檢查更新行為,如果它是一個(gè)更新,確保它不包含scheme值,如果它不是更新。那么調(diào)度AlarmManager 的PendingIntent不會(huì)觸發(fā)這個(gè)行為,在這種情況下,檢查每個(gè)Widget標(biāo)識(shí)符是否有一個(gè)配置選項(xiàng)值。
如果沒有,那么在配置Widget之前,你知道這個(gè)更新行為被接收到。但如果選項(xiàng)值有效,那么你知道可以調(diào)度PendingIntent,在onReceive()方法中你可以看到完整的邏輯實(shí)現(xiàn)。這個(gè)方案允許多個(gè)Widget同時(shí)顯示,如圖2所示。更新也可以以不同的頻率進(jìn)行,每個(gè)顯示的圖片是從圖片集中隨機(jī)選擇的。
至此,你已經(jīng)看到了如何在Android系統(tǒng)上創(chuàng)建一個(gè)基本的Widget,每個(gè)Widget實(shí)例按獨(dú)立的方式調(diào)度,由用戶自行配置。但App Widge框架不直接支持,因此需要自動(dòng)動(dòng)手編碼實(shí)現(xiàn)。以后我將在此Widget基礎(chǔ)上講解如何從互聯(lián)網(wǎng)上下載圖片,以及如何直接在屏幕上控制圖片,敬請(qǐng)期待吧!
【編輯推薦】