2013-03-20 45 views
0

一個Android服務更新圖像我想有一個Android服務,收集數據,然後生成基於該數據的圖像。我想從服務中在我的用戶界面上繪製此圖像,或者找到一種有效的方式將圖像數據發送到我的用戶界面併發出「立即繪製」通知。數據實時傳輸,更新速率爲每秒8張圖像(256x256像素)。因此,我需要一些相當有效率的東西,並且很難找到最好的(甚至是好的)方法來做到這一點。可以在我的UI

我是一個相當新的Android程序員,所以不建議太無禮了!我的代碼和我的演示UI一起作爲AsyncTask工作。我想將它變成一項服務,以便我可以將它用於多個用戶界面,其中一些將由我的同事撰寫。也許這是另一個問題,但可能有更好的方法來做到這一點比服務。我的根本問題是,我想將沒有源代碼的「服務」分發給我的同事,以供我的圖像顯示在他們的用戶界面中。

我「服務」不必更新多個用戶界面。一次只有一項活動會綁定到我的「服務」。無需廣播到多個活動。如果有更直接的方式來思考這個問題,我很高興聽到它。

謝謝

回答

0

我想你可以寫你的數據到一個文件。將其存儲在SD卡上。然後向你的朋友活動發送一個包含該文件數據的廣播。這樣你的朋友不會有源代碼。

+0

看來,這將是太慢了,我可能會需要一次更新圖像時,UI試圖顯示它。文件權限問題將隨之而來... – Dave 2013-03-21 18:55:38

0

我想從服務中在我的用戶界面上繪製此圖像,或者找到一種有效的方式將圖像數據發送到我的用戶界面併發出「立即繪製」的通知。

你不能做到這一點 - 只有主線程可以修改UI。我打賭你在你的AsyncTask演示中繪製onPostExecute()方法 - 嘗試移動你的代碼到doInBackground(),它不會工作。

我覺得你可以做的最好的是獲取/購買你的服務內部圖像,並使用廣播/奧托告知您的客戶/不管它是介於SD卡上,也可以使用。不能肯定這是否是足夠快,以每秒8個傳遞圖像...

+0

其實,我創建一個新的位圖時使用了doInBackground,然後是publishProgress()。很棒。我期望做同樣的事情,但使用服務。我認爲寫入SD卡是可行的,但速度太慢,並且存在其他問題(例如在別人正在閱讀時覆蓋它,這是我需要做的)。 我想我真正想要的是一個高效的Android共享內存資源。有這樣的事嗎?然後,我的服務可以簡單地通知用戶界面新圖像已準備就緒,用戶界面可以在需要時抓取它。 – Dave 2013-03-21 18:51:59

相關問題