2016-06-08 2 views
2

У меня есть активность, и внутри него есть класс AsyncTask. Внутри класса AsyncTask я хочу объявить счетчик как статическую переменную, но я не могу, потому что класс AsyncTask считается внутренним классом mainActivity.Как подсчитать количество объектов, созданных из внутреннего класса

Есть ли способ создать статическую переменную внутри внутреннего класса AsycTask, чтобы подсчитать количество объектов, созданных для AsyncTask, например?

код

class MainActivity extends Activity { 
    .... 
    .... 
    .... 
    .... 

    class MyAsync extends AsyncTask <void, Void, Void> { 

     private static int counter = 0; // is not possible here 
    } 

} 

ответ

1

Вы можете создать конструктор, чтобы увеличить значение counter внутри AsyncTask.

Делают это так:

class MainActivity extends Activity { 
.... 
.... 
.... 
.... 
    int counter = 0; 
    class MyAsync extends AsyncTask <void, Void, Void> { 

     MyAsync() 
     { 
      counter++; 
     } 
    } 

} 

Logic за это: конструктор любого класса будет называться каждый раз, когда будет создан новый объект этого. Внутри конструктора у нас есть counter++, поэтому каждый раз, когда создается новый объект, счетчик увеличивается, и у вас будет счетчик числа объектов.

+0

хорошо, но в этом случае счетчик varibale не должен быть объявлен как статический это может быть нестатический, а также, не правда ли? – user2121

+0

Да, он будет работать не статичным, а также .. !! –

+0

@jankigadhiya: Вы гуджрати? : o –

4

Вы можете просто сделать что-то вроде этого:

class MainActivity extends Activity { 
    private static int counter = 0; 

    // ... 

    static class MyAsync extends AsyncTask <Void, Void, Void> { 

     private MyAsync() { 
      counter++; 
     } 

     // ... 
    } 
} 

Таким образом counter будет увеличиваться каждый раз, когда вы создаете новый экземпляр MyAsync.

2

Вы также можете использовать статический внутренний класс.

код

class MainActivity extends Activity { 
    .... 
    .... 
    .... 
    .... 

    static class MyAsync extends AsyncTask <void, Void, Void> { 

     private static int counter = 0; // is not possible here 
    } 

} 
Смежные вопросы