AsyncTasks не собираются, в результате чего другие AsyncTasks не запускаются

Мое приложение использует много AsyncTasks. Это веб-приложение в конце концов. И когда я отслеживаю вкладку «Отладка», я замечаю, что каждый AsyncTask говорит, что работает за ней, и после 5 AsyncTasks я не могу запустить любые AsyncTask. Я исправил это, изменив исполнителя наTHREAD_POOL_EXECUTOR что позволяет объединять 15 потоков. Но AsyncTasks по-прежнему показывают, как работает.

Все AsyncTasks содержат InputStreams и BufferedReaders для чтения JSON, но я никогда не вызываюclose() метод на Стримеры и Читатели. Может ли это быть так, или AsyncTask будет собираться после того, как он завершится, несмотря ни на что?

Если это так, то почему я не могу запустить более 5 AsyncTasks в своем приложении?

Seeing as I put a bounty on it, I will explain this more explicitly

AsyncTasks все проходят через свои методы. Все они построены одинаково точно, за исключением разныхBasicNameValuePairs, Я на 100% уверен, что в коде нет простой ошибки.

Вот пример одного из AsyncTasks:

private class RunningEvent extends AsyncTask<Void, Void, Response> {

    @Override
    protected void onPreExecute() {
        if (Constants.isOnline(getApplicationContext())) {
            super.onPreExecute();
        } else {
            Toast.makeText(getApplicationContext(),
                    "No internet connection", Toast.LENGTH_LONG).show();
            return;
        }
    }

    @Override
    protected Response doInBackground(Void... empty) {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(URL);

        try {
            List<NameValuePair> values = new ArrayList<NameValuePair>(5);
            values.add(new BasicNameValuePair("tag", "eventRunning"));
            values.add(new BasicNameValuePair("userid", String
                    .valueOf(response.user.userid)));
            post.setEntity(new UrlEncodedFormEntity(values));

            HttpResponse httpresponse = client.execute(post);
            HttpEntity entity = httpresponse.getEntity();
            InputStream stream = entity.getContent();

            Log.i("MenuActivity",
                    "Input streamed, parsing Gson for existing events");
            Gson gson = new Gson();
            Reader reader = new InputStreamReader(stream);

            eventresponse = gson.fromJson(reader, Response.class);
            return eventresponse;
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("RunningEvent", "Error sending data to Server");
        }
        return null;
    }

    @Override
    protected void onPostExecute(Response result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        Log.i("MenuActivity", "Binding button");
        if (eventresponse != null) {
            if (eventresponse.success == 1) {
                eventresponse.user = response.user;
                bActivity.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {
                        Intent i = new Intent("com.xxx.xxx.EVENT");
                        i.putExtra("response", eventresponse);
                        running = false;
                        switcher.cancel(true);
                        MenuActivity.this.finish();
                        startActivity(i);
                    }

                });
            } else {
                bActivity.setText("Nieuw activity");
                bActivity.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {
                        Intent i = new Intent("com.xxx.xxx.NEWEVENT");
                        i.putExtra("response", response);
                        running = false;
                        switcher.cancel(true);
                        MenuActivity.this.finish();
                        startActivity(i);
                    }

                });
            }
        } else {
            Log.i("RunningEvent", "Response is null");
        }
    }

}

Пример выше, иногда запускается как 6-йAsyncTask и он никогда не войдет вdoInBackground() метод. Я считаю, что это 5Thread пределSERIAL_EXECUTOR, Я "исправил" проблема, поставив большинствоAsyncTasks вTHREAD_POOL_EXECUTOR, но это всего лишь избегает этого.

Что может быть причиной того, что этиAsyncTasks никогда не прекращайте бегать и забиватьExecutor?

Ответы на вопрос(1)

Ваш ответ на вопрос