이 asyncTask 클래스는 Launcher Activity의 onCreate() 메소드에서 호출됩니다.이 2 AsyncTask 클래스에서 서비스를 호출하고 sqlite 데이터베이스에 데이터를 저장하려고합니다. 하지만이 2 asyncTask onPreExecute() 및 doInBackground() 메서드가 호출되었지만 onPostExecute() 메서드는 호출되지 않았습니다. 이런 일이 왜 병렬 작동하지 않는 2 AsyncTask를가이 당신에게AsyncTask onPostExecute 메도 드가 호출되지 않았습니다
public class EcafeHome extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
new GetOfferData(EcafeHome.this).execute("runnable");
new GetMenuData(EcafeHome.this).execute("params");
}
}
public class GetOfferData extends AsyncTask<String, Void, String>
{
Context mContext = null;
public GetOfferData(Context mContext)
{
this.mContext = mContext;
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
Log.d("GetOfferJsonData", "onPreExecute");
}
@Override
protected String doInBackground(String... params)
{
Log.d("GetOfferJsonData", "doInBackground");
return Common.InputStreamToString(Common.HTTP_GET(Constant.host, Constant.serviceUrlProt, Constant.URL.catagoryList));
}
@Override
protected void onCancelled(String result)
{
super.onCancelled(result);
Log.d("GetOfferJsonData", "onCancelled");
}
@Override
protected void onPostExecute(String response)
{
super.onPostExecute(response);
Log.d("GetOfferJsonData", "onPostExecute");
if(response != null)
{
Log.d("response", response);
try
{
JSONObject mJsonObject = new JSONObject(response);
JSONArray jArrayPackages = mJsonObject.getJSONArray(Constant.JSON_KEY.PACKAGE.PACKAGES);
for(int i = 0; i < jArrayPackages.length(); i++)
{
JSONObject jObjectPackages = jArrayPackages.getJSONObject(i);
int packageId = jObjectPackages.getInt(Constant.JSON_KEY.PACKAGE.ID);
String pkgName = jObjectPackages.getString(Constant.JSON_KEY.PACKAGE.NAME);
int pkgprice = jObjectPackages.getInt(Constant.JSON_KEY.PACKAGE.PRICE);
String pkgpic = jObjectPackages.getString(Constant.JSON_KEY.PACKAGE.PIC);
DBConstant.openDatabase(mContext);
Cursor cursorOffer = DBConstant.mDBHelper.getPackageInfo(DBConstant.mSQLiteDatabase, packageId);
if(cursorOffer != null)
{
Log.d("package offer", ""+cursorOffer.getCount());
if(cursorOffer.getCount() == 0)
{
DBConstant.mDBHelper.insertPackageInfo(DBConstant.mSQLiteDatabase, packageId, pkgName, pkgprice, pkgpic);
}
}
else
{
}
if(!cursorOffer.isClosed())
cursorOffer.close();
JSONArray jArrayPackageItem = jObjectPackages.getJSONArray(Constant.JSON_KEY.PACKAGE.PACKAGE_ITEMS);
for(int j = 0; j < jArrayPackageItem.length(); j++)
{
JSONObject jObjectPackageItem = jArrayPackageItem.getJSONObject(j);
int pkgItemID = jObjectPackageItem.getInt(Constant.JSON_KEY.PACKAGE_ITEM.ID);
int pkgItemQnty = jObjectPackageItem.getInt(Constant.JSON_KEY.PACKAGE_ITEM.QUANTITY);
int menuitemid = jObjectPackageItem.getInt(Constant.JSON_KEY.PACKAGE_ITEM.MENU_ITEM_ID);
int pkgID = jObjectPackageItem.getInt(Constant.JSON_KEY.PACKAGE_ITEM.PACKAGE_ID);
//DBConstant.mDBHelper.insertPackageItemInfo(DBConstant.mSQLiteDatabase, pkgItemID, pkgID, menuitemid, pkgItemQnty);
DBConstant.openDatabase(mContext);
Cursor cursorOfferItem = DBConstant.mDBHelper.getPackageItemInfo(DBConstant.mSQLiteDatabase, pkgItemID);
if(cursorOfferItem != null)
{
Log.d("package Item offer", ""+cursorOfferItem.getCount());
if(cursorOfferItem.getCount() == 0)
{
DBConstant.mDBHelper.insertPackageItemInfo(DBConstant.mSQLiteDatabase, pkgItemID, pkgID, menuitemid, pkgItemQnty);
}
}
if(!cursorOfferItem.isClosed())
cursorOfferItem.close();
DBConstant.closeDatabase();
}
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
}
감사, 제발 말해, 나는 다른 작업을 수행하는 것보다 후 첫 두 AsyncTask를 수행합니다. 그래서이
여러 AsyncTask를 그렇게 작업 당신의 하나가 될 수있는 몇 가지 OS 버전에서 작동되지는 한 OnCreate에서 하나 개의 작업에 의해 하나를 확인하시기 바랍니다이 함께 문제가() 나는 생각 – Pratik