2016-12-20 2 views
1

私は犯罪データをダウンロードし、SQLLiteデータベースに挿入してGoogleマップにプロットするアプリケーションを作成しました。Androidの非同期タスク - 複数のクラスからの進捗状況を取得

これで、犯罪データを取得し、Jsonを解析してデータベースに格納する必要があるため、処理に時間がかかります。

今私は3つのクラスを持っています。

PoliceAPI - これはJsonデータを取得して解析し、犯罪リストを返します。

CrimeMapBLL - 返されたPoliceAPIのデータは、このクラスが処理するデータベースに挿入されます。

CrimeMap - Asynctaskを実行するAndroidのフラグメント。

CrimeMapコード//

class GetCrimeData extends AsyncTask<Void, String, Void> 
{ 
    CrimeMapBLL crimeMapBLL; 
    @Override 
    protected Void doInBackground(Void... params) { 

     DateTime dateTime = DateTime.parse(_date); 

     crimeMapBLL = new CrimeMapBLL(lat, lng, dateTime, searchHistoryid); 
     crimeMapBLL.GetCrime();//This method takes a long long long time.. 

     publishProgress(crimeMapBLL.GetProgressText());//this won't work, needs to wait for method above to finish 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 

     progressBarInclude.setVisibility(View.GONE); 
     SetMapAsync(); 
    } 

    @Override 
    protected void onProgressUpdate(String... values) { 
     super.onProgressUpdate(values); 
     progressBarView.SetProgressMessage(crimeMapBLL.GetProgressText()); 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     progressBarInclude.setVisibility(View.VISIBLE); 

    } 
} 

メソッドcrimeMapBLL.GetCrimeは()を実行するのに長い時間がかかります。このメソッドを最初に呼び出します。

List<Crimes> CrimesList = policeAPI.GetCrimes(lat, lng, date); 

このメソッドはHTTP接続を作成し、jsonを解析します。

PoliceAPIおよびCrimeMapBLLクラスでGetProgressText()メソッドを作成しましたが、GetCrimesが実行を終了するまでテキストが表示されません。

これを処理する最善の方法は何ですか?

+0

あなたが 'CrimeMapBLL'クラスを投稿した場合、私はこれに答えることができると思います。 –

+0

ありがとうございますが、私はこの問題を解決しました。答えを見る – user7321559

答えて

関連する問題