2017-08-07 21 views
0

非同期タスクを使用してマーカーをレンダリングし、Googleマップにマーカーを追加しようとしていますが、マップのロードが停止することはありません。 doInBackgroundメソッドとonPostExecuteメソッドを正しく使用していますか?私は本当にこの問題を解決する方法がわかりません。ここでAsyncTaskが終了しない

は私の2つの非同期タスククラスは

public class addMarkers extends AsyncTask<Void, String, GoogleMap> { 

    String result; 
    ProgressDialog pdia; 

    protected void onPostExecute(Result result) { 

     pdia.dismiss(); 
    } 

    @Override 
    protected GoogleMap doInBackground(Void... params) { 
     publishProgress("Loading..."); // Calls onProgressUpdate() 
     MapsFragment.HOME = new LatLng(30.284273, -97.744777); 
     mGoogleMap.addMarker(new MarkerOptions().position(HOME)); 
     return mGoogleMap; 
    } 

    @Override 
    protected void onPreExecute() { 

     super.onPreExecute(); 
     pdia = ProgressDialog.show(getContext(), "Please wait", "Loading data from database.", true, false); 
    } 

    @Override 
    protected void onProgressUpdate(String... text) { 

    } 
} 

public class renderMap extends AsyncTask<Void, String, View>{ 
    ProgressDialog pdia; 
    LayoutInflater inflater; 
    ViewGroup container; 

    renderMap(LayoutInflater inflater, ViewGroup container){ 
     this.inflater = inflater; 
     this.container = container; 
    } 

    protected void onPostExecute(String result) { 

     pdia.dismiss(); 
    } 

    @Override 
    protected View doInBackground(Void... params) { 
     publishProgress("Loading..."); // Calls onProgressUpdate() 
     mView = inflater.inflate(R.layout.fragment_maps, container, false); 
     return mView; 
    } 

    @Override 
    protected void onPreExecute() { 

     super.onPreExecute(); 
     pdia = ProgressDialog.show(getContext(), "Please wait", "Loading data from database.", true, false); 
    } 

    @Override 
    protected void onProgressUpdate(String... text) { 

    } 
} 

されており、ここで私の画面は、私はマップをロードしようとすると、次のようになります。 enter image description here

答えて

0

他のスレッドではUI操作を行うべきではありません.UIスレッドでのみUI操作を行うべきであるため、両方のAsyncタスクを削除し、UIスレッドでコードを追加してください。

関連する問題