2012-04-30 73 views
0
webservice.UpdateAllNews(); 

該功能是將在線數據庫中的數據下載到本地數據庫。如何檢測函數是否已經運行完畢?

我想要的是我想在檢測到功能下載完成所有數據後啓動下一個活動。

P/S的數據是大

這是我目前的狀況

webservice.UpdateAllNews(); 
       int secondsDelayed = 17; 
       new Handler().postDelayed(new Runnable() { 
        public void run() { 
         startActivity(new Intent(Main_Launcher.this, 
           Main_AllLatestNews.class)); 
         finish(); 
        } 
       }, secondsDelayed * 1000); 

這是另一個類的函數

public void UpdateAllNews() { 
    try { 
     List<List_CategoryNews> newsCat = dbhelper.getAllNewsCategories(); 
     for (List_CategoryNews nwCat : newsCat) { 

      int CatNewsID = nwCat.getCatID(); 

      if (CatNewsID != 0) { 
       dbhelper.DeleteNews(CatNewsID); 
       GetNews(CatNewsID, datetemp1, datetemp2); 

      } 

      String log = " NewsCatID- " + nwCat.getCatID() 
        + " category Name- " + nwCat.getNewCatName(); 
      System.out.println(log); 
     } 
    } catch (Exception ex) { 
     AlertDialog.Builder b = new AlertDialog.Builder(mContext); 
     b.setMessage(ex.toString()); 
     b.show(); 
    } 
} 

這一個是恆定的推出17秒後,我想自動啓動活動完成後從在線數據庫下載數據,而不是延遲17秒。

有什麼建議嗎?

+0

'webservice'的類型是什麼?你可以發佈'UpdateAllNews()'方法的代碼嗎? – Rajesh

回答

1

也許嘗試使用的AsyncTask:

private class YourTask extends AsyncTask<String, Void, String> 
{ 
    @Override 
    protected String doInBackground(String... urls) 
    { 
     webservice.UpdateAllNews(); 
    } 

    @Override 
    protected void onPostExecute(String result) 
    { 
     startActivity(new Intent(Main_Launcher.this,Main_AllLatestNews.class)); 
     finish(); 
    } 
} 

以及如何運行它:

YourTask task = new YourTask(); 
task.execute("..."); 
+0

這個功能是什麼? –

+0

這是異步任務的類,在完成你的方法後會調用一些方法。 – goodm

+0

我創建這個類後,如何調用這個類以及如何運行它? –

0

你爲什麼不使用簡單的客戶端 - 服務器的方法一樣觀察員觀察的? 任務完成後,observable將調用觀察者的更新函數,這將是您的主要活動。

+0

不知道是什麼,所以沒有使用 –

相關問題