Признаюсь, я новичок во всей этой Android-штучке. Я пытаюсь создать приложение, но случайно получаю ошибки принудительного закрытия, и я действительно не знаю, почему. В моем приложении много действий, ни одно из них не завершается(), когда я начинаю новое. Я получаю данные из Интернета (через веб-сервисы и прямую загрузку изображений) и часто использую AsyncTask. Большую часть времени он падает на асинтаске. Вот пример того, как я делаю вещи:
private BackTask backTask;
Activity ctx = this;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.trackslist);
backTask = new BackTask();
backTask.execute();
}
protected class BackTask extends AsyncTask<Context, String, myObject>
{
@Override
protected myObject doInBackground(Context... params)
{
try{
if (hasInternet(ctx)==true)
{
//access the web SERVICE here
//initialize myObject WITH result FROM the web
return myObject
}
else
{
return null
}
}catch(Exception ex){
return null;
}
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected void onProgressUpdate(String... values)
{
super.onProgressUpdate(values);
}
@Override
protected void onCancelled()
{
super.onCancelled();
}
@Override
protected void onPostExecute( myObject result )
{
super.onPostExecute(result);
if (result==null || result.isEmpty())
{
//no valid result, show a message
}
else
{
//result valid do something with it
}
}
}
@Override
public void onPause()
{
if (backTask!=null && ! backTask.isCancelled())
{
backTask.cancel(true);
}
super.onPause();
}
public void btnStartOnClick(View target) {
Intent intent = new Intent(this, MyNewActivity.class);
startActivity(intent);
}
Когда активность получает onPause(), задача отменяется. Я не уверен, что происходит во время попытки/поймать, если появляется ошибка, из того, что я сделал, он должен возвращать ноль, но я думаю, что здесь я что-то упускаю. Как я уже говорил, случайным образом я приближаюсь к силе, даже если я нахожусь в другом действии. Это действительно расстраивает, поскольку я не могу предложить приложение с таким поведением. Итак, что я делаю неправильно?