Любое решение, которое не хранит неявную ссылку, хранящуюся внутри нестатического внутреннего класса, является полностью приемлемым.В приведенном вами примере вы можете просто изменить
private class GetUsers extends AsyncTask<String, Void, Void>{
на
private static class GetUsers extends AsyncTask<String, Void, Void>{
Если в какой-то момент вам нужно сослаться на членов внешнего класса, то создайте WeakReference
длявнешний экземпляр как член внутреннего класса, например:
private static class GetUsers extends AsyncTask<String, Void, Void> {
private final WeakReference<OuterClass> outer;
GetUsers(OuterClass outer) {
this.outer = new WeakReference<>(outer);
}
@Override
protected Void doInBackground(String... strings) {
OuterClass outer = this.outer.get();
// Return early if the outer reference is null
if (outer == null) {
return null;
}
// Your logic...
return null;
}
}