2013-08-15 3 views
1

Я создаю приложение, которое широко использует AsyncTask для извлечения данных из базы данных. Моя проблема в том, что у меня почти 12 разных AsyncTasks, и это делает мой код более грязным и грязным, а также тот факт, что некоторые задачи распределяются между различными видами деятельности.Где я могу написать мои AsyncTasks

Некоторые AsyncTask я уже писал иметь свой собственный файл класса Java, но это не всегда идеально, поскольку некоторые запросы необходимо получить доступ к ресурсам приложения (что делает использование Resources.getSystem().getString(stringId) невозможно, или требуя передать экземпляры мне нужно изменить как параметры в качестве ссылки)

Есть ли рекомендованный способ написать классы AsyncTask?

+0

Что случилось с прохождением в необходимых внешних объектов в качестве параметров? – kabuko

ответ

2

Сложно сказать, не зная точных обстоятельств, но если у вас есть такие, которые выполняют подобные задачи, вы можете создать их в своем собственном файле и создать конструкторы, которые берут нужные вам параметры.

Вы можете настроить их, чтобы принять объект Context, Activity и т. Д. ... затем сделать их многоразовыми. Если у вас есть некоторые, которые необходимы только для определенного Activity, тогда я бы сделал его внутренним классом, но если он используется несколькими Activities, тогда я бы сделал его отдельным классом и использовал конструкторы для принятия необходимых параметров.

У меня есть много AsyncTasks в моих приложениях, и это зависит от того, насколько они вам понадобятся. Как я уже сказал, вы можете передать Context конструктору, когда вам это нужно, для объектов, для которых требуется Context. Просто передайте его как

MyTask task = new MyTask(this); // for passing Context or any other params the constructor takes 
task.execute(); 

И в задаче

public class MyTask extends AsyncTask<...> // add AsyncTask params 
{ 
    Context context; 
    public MyTask(Context c) 
    { 
     context = c; 
    } 
    // methods 
} 
+0

Я не думал о создании конструкторов, которые принимают 'Context' в качестве параметра! Большое спасибо ! – Jivay

+0

Добро пожаловать. Вы также можете перейти в 'Просмотры' или любой другой объект, который вам нужен. – codeMagic

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