Я разрабатываю свое первое приложение для Android. Я пробовал каждый фрагмент кода, который я нашел на этой странице и других. Что ж, моя проблема заключается в необходимости входа пользователя в систему с помощью интернет-службы, поэтому я использую класс AsyncTask, но когда я попытался добавить ProgressDialog в фоновый метод, это диалоговое окно показало только секунду спустя, когда фоновый метод завершил работу. Похоже, пользовательский интерфейс заблокирован во время работы фонового процесса.
Это код моей деятельности и асинхронный класс.
public class PanelAdministracion extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.paneladministracion);
try {
Bundle datos = this.getIntent().getExtras();
Map<String,String> credenciales = new HashMap<String,String>();
credenciales.put("usuario", datos.getString("usuario"));
credenciales.put("password", datos.getString("password"));
new ObtenerDatos().execute(credenciales,null,null).get();
MyPagerAdapter adapter = new MyPagerAdapter(this);
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
private class ObtenerDatos extends AsyncTask< Map<String,String>, Void, Void>{
protected ProgressDialog progressDialog;
private final static String TAG = "LoginActivity.EfetuaLogin";
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.v(TAG, "Executando onPreExecute de EfetuaLogin");
//inicia diálogo de progresso, mostranto processamento com servidor.
progressDialog = ProgressDialog.show(PanelAdministracion.this, "Autenticando", "Contactando o servidor, por favor, aguarde alguns instantes.", true, false);
}
@Override
protected Void doInBackground(Map<String,String>... params) {
Log.d(TAG, "Executando doInBackground de EfetuaLogin");
try {
if(Usuario.login(params[0].get("usuario"), params[0].get("password"))){
Usuario.obtenerNotificaciones();
Usuario.obtenerPeliculas();
Usuario.obtenerSeries();
}else{
Intent volver = new Intent(PanelAdministracion.this,SerieslyActivity.class);
PanelAdministracion.this.startActivity(volver);
}
} catch (NotSignInException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (DOMException e) {
e.printStackTrace();
} catch (GetDataSerieException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progressDialog.dismiss();
}
}
}
Спасибо всем за помощь!