2010-09-17 48 views
1

我是一位開發Android的新手,並且爲了更熟悉該平臺而一直在閱讀和研究。我的編程知識很溫和,我有C++經驗並且熟練使用Actionscript 3.0。我選擇了初級編程來開發遊戲開發,但來自更多的藝術/設計背景。尋求構建應用程序指南的新Android開發人員

我有一個比較簡單的想法,我想從最實用的方式來看待這是我的第一次嘗試。本質上,應用程序的核心功能將是我將從星曆錶獲取的繪製信息。在基於來自圖表的數據的當天的特定時間,我想要改變基於當天的圖像/顯示信息。我正試圖圍繞儘可能最好的方式來做到這一點。另外,我希望在發生更改時向用戶提供某種類型的通知,但這是我在基本實施方面遇到的情況。

所以我的問題是,如果你要設置類似這樣的事情,你會怎麼樣?我不確定的是設置時間元素,以便應用程序知道何時更改要顯示的圖像/數據。 如果你花時間讀這個我真的很感激它。 韋德。

回答

1

這實際上取決於何時/何時/如何顯示此圖像。我將假設圖像顯示在正常Activity

查看使用AlarmManager設置警報。這些警報可能會啓動Service更改圖像源(可能更新圖像資源或文件名的數據庫條目)。在Service中完成工作後,請使用Intent.putExtra()發送Broadcast(或StickyBroadcast),結果爲Bundle。您也可以使用NotificationManager在此處設置狀態欄通知。 NotificationPendingIntent應該是顯示圖像的Activity

退房「報警」和APIDemos/samples/android-8/ApiDemos/src/com/example/android/apis/app)的「通知」部分

更新:更健壯的報警系統是馬克·墨菲WakefulIntentService發現here

然後,在Activity註冊BroadcastReceiver,聽您在Service設置BroadcastIntent。這將監聽服務何時完成。如果在Service中使用StickyBroadcast,則數據將被緩存,使其在Activity到達堆棧的前端時可用。否則,您將需要保存數據(在SQLite數據庫或SharedPrefernces中)並使用時間戳。

UPDATE - 展示持久性數據存儲:

一個偉大的地方開始學習SQLite的是Android Note Pad demo。這將教你Android的許多關鍵方面,包括生命週期,ContentProviders(db包裝)和使用Android Views(小工具)。

我提到的替代方法是使用應用程序的默認SharedPreferences。一個簡單的例子是這樣的:

String imageUri = null; 
long timestamp = 0; 
final String currentImage = "current_image"; 
final String lastTimestamp = "last_timestamp" 

// Access the default SharedPreferences 
SharedPreferences preferences = 
    PreferenceManager.getDefaultSharedPreferences(this); 
// The SharedPreferences editor - must use commit() to submit changes 
SharedPreferences.Editor editor = preferences.edit(); 

// Get the current image URI 
if (preferences.contains(currentImage) { 
    imageUri = preferences.getString(currentImage, null); 
} 
// Get the last timestamp 
if (preferences.contains(lastTimestamp) { 
    timestamp = preferences.getLong(lastTimestamp, 0); 
} 

// To set the SharedPreferences 
editor.putString(currentImage, imageUri); 
editor.putLong(lastTimestamp, timestamp); 
editor.commit(); 

希望我正確理解你,這有助於。

+0

感謝Paul的回覆。我很確定我正在追蹤你的故障。我會按照您的建議查看警報和通知部分。麻煩你詳細說明的東西是堅持數據並使用時間戳。 – Wade 2010-09-18 21:03:55

相關問題