2012-04-30 3 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

Почему бы вам не использовать простую методологию клиент-сервер, как наблюдатель-наблюдающиеся? Когда задача будет выполнена, наблюдаемый вызовет функцию обновления наблюдателя, которая будет вашей основной деятельностью.

+0

не знаю, что это, поэтому не использовали –

 Смежные вопросы

  • Нет связанных вопросов^_^