나는 안드로이드 2.3.3에서 완벽하게 실행되지만 안드로이드 4.2에서는 실행되지 않는 코드를 가지고 있습니다. 활동이 시작될 때 AsyncTask
을 확장하는 Initialize
클래스의 인스턴스를 호출해야합니다. 하지만 처음 활동 시작 - 작동, 다른 활동으로 돌아갈 때 - progress
회 전자가 회전하고 아무 일도 일어나지 않으며 예외가 발생하지 않습니다. android 4.2에서 비동기 작업의 새 인스턴스를 실행할 수 없습니다.
execute()
의 호출에 가서 내 가지 않습니다
Initialize
의 doInBackground()
이 유일한 안드로이드 4.2이나 문제에 문제가 있습니까?
protected void onStart() {
super.onStart();
if (orders != null) {
try {
spinner.setVisibility(View.GONE);
progress.setVisibility(View.VISIBLE);
new Initialize().execute();
} catch (Exception e) {
spinner.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
Log.d("Error","exception: " + e.getMessage());
}
}
}
초기화는
private class Initialize extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
if (orders == null || orders.isEmpty()) {
orders = new ArrayList<Order>();
BaseProcess Proc = new BaseProcess(MainActivity.this);
orders.addAll(Proc.getOrdersFromBase());
Proc.database.close();
Proc.close();
}
} catch (Exception ex) {
Log.d("Error","exception " + ex.getMessage());
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
adapter.notifyDataSetChanged();
update();
}
}
후 당신의 AsyncTask를의 PLZ 사이
execute()
의 기본 동작 인, theTHREAD_POOL_EXECUTOR
로 선택합니다. –이 외에 다른 AsyncTask를 사용하고 있습니까? 'targetSdkVersion'이 13 이상이면'execute()'는 Android 3.2 이상에서 기본적으로 작업을 직렬화합니다. – CommonsWare
@ shobhit-puri 게시 됨 –