2016-03-04 57 views
0

我是新開發的Android和Java,所以我承擔,並請讓我知道如果我的任何措辭或任何東西是錯誤的。我搜索了很多個小時,並且遇到了很多未知的條款和實施方法,這些條款和方法可能會或可能不會工作,我已經走了,並且陷入了一陣眩暈。不斷從後端數據庫提取數據?

我目前正在開發一種Android應用程序的Feed,我的主要目標是能夠拉動Feed(類似於Gmail應用程序),並在其中輸入新輸入的數據數據庫加載到設備上並顯示在屏幕上。只是要清楚,我只想在應用程序打開時提取數據。

下面是關於應用程序的一些背景。主活動主機的內FragmentPagerAdapter類,其控制在一個TabLayout 3個片段。第一個標籤是訂閱源,第二個標籤是聯繫人列表(我也希望以類似於訂閱源的方式更新),第三個標籤只是個人資料。

我到目前爲止所做的是我在後端服務器上有一個種子數據庫(Python/SqlAlchemy),並且在Feeds和聯繫人片段中都設置了AsyncTask GET(使用HttpURLConnection)全部適當的數據並將其帶到客戶端。從那裏我從接收的JSON中提取需要的數據,並將其顯示在動態生成的TextViews中。這部分都很好。

我試着停止/重啓AsyncTask,但文件說,這是一個不走。我試過notifyDataSetChange(),但它也不起作用。另外,爲了確認,notifyDataSetChange()是否會以達到我的目標的方式自動更新片段?我讀過一些文檔的約,並在這裏看到許多話題,但我不能把一個明確的答案爲我實現,我真搞不清楚它...

所以有人可以可以直接我在哪裏學習如何在AsyncTask已經運行或當前正在運行後從後端數據庫連續提取數據?或者至少如何將其詞組,以便我可以更有效地進行搜索?謝謝!

回答

0

AsyncTask是要走的路。在您的onResume()中,執行AsyncTask。是的,文檔確實表示重用AsyncTask是不行的。所以你需要這樣做:

new MyAsyncTask.execute(url); 

現在,這是一次性更新。定期更新如何?最簡單的方法是使用定期觸發AsyncTaskCountDownTimer。 Docs:http://developer.android.com/reference/android/os/CountDownTimer.html

此外,不要使匿名CountDownTimer,而是,使一個類,擴展它。所以,你會有一個名爲MyCountDownTimer extends CountDownTimer的課程。 onFinish()就是您要開火的地方AsyncTask

希望幫助

+0

據我瞭解,該片段的'的onResume()'將僅承載片段活動被暫停,然後繼續調用,所以我不知道,這將允許用戶下拉Feed(這本身就是一個片段),並從服務器獲取更新的數據。但是現在我會把這個計時器的建議保留在我的後面的口袋裏,謝謝! – jexx04

+0

事實證明,我一直在尋找的是Swipe-to-Refresh(https://developer.android.com/training/swipe/add-swipe-in​​terface.html)。 – jexx04