Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
DoomGrey
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 1
#1

Организовать что бы AsyncTask запускался в фрагменте раз в определененное время - Android

05.07.2015, 16:50. Просмотров 194. Ответов 0
Метки нет (Все метки)

Я использую Asynctask для загрузки данных через Volley. Не могу понять как организовать что бы этот AsyncTask запускался в фрагменте раз в определененное время. По сколько я только начинаю разбираться в AsyncTask и вообще в Android программирование то не совсем понимаю как это можно эффективно реализовать. Это приложение было построенно по примерам и в я не совсем понимаю зачем вообще этот Listner.

Это мой отдельный класс для AsyncTask
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.aa.qc.task;
 
import android.os.AsyncTask;
 
import com.aa.qc.callbacks.ZleceniaLoadedListner;
import com.aa.qc.extras.ZleceniaSorter;
import com.aa.qc.extras.ZleceniaUtils;
import com.aa.qc.network.VolleySingleton;
import com.aa.qc.pojo.Zlecenia;
import com.android.volley.RequestQueue;
 
import java.util.ArrayList;
 
 
public class TaskLoadZlecenia extends AsyncTask<Void, Void, ArrayList<Zlecenia>>{
 
    private ZleceniaLoadedListner myComponent;
    private VolleySingleton volleySingleton;
    private RequestQueue requestQueue;
    private ZleceniaSorter mSorter = new ZleceniaSorter();
 
 
    public TaskLoadZlecenia(ZleceniaLoadedListner myComponent) {
        this.myComponent = myComponent;
        volleySingleton = VolleySingleton.getsInstance();
        requestQueue = volleySingleton.getmRequestQueue();
 
    }
 
 
    @Override
    protected ArrayList<Zlecenia> doInBackground(Void... params) {
 
        ArrayList<Zlecenia> listZlecenias = ZleceniaUtils.loadZlecenia(requestQueue);
        mSorter.sortZleceniaByTime(listZlecenias);
        return listZlecenias;
    }
 
    @Override
    protected void onPostExecute(ArrayList<Zlecenia> listZlecenias) {
        if (myComponent != null) {
            myComponent.onZleceniaLoaded(listZlecenias);
 
        }
    }
 
}
Это мой listner.class
Java
1
2
3
4
5
6
7
8
package com.aa.qc.callbacks;
 
import com.aa.qc.pojo.Zlecenia;
import java.util.ArrayList;
 
public interface ZleceniaLoadedListner {
    public void onZleceniaLoaded(ArrayList<Zlecenia> listZlecenias);
}
Это мой фрагмент где я это хочу реализовать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
public class FragmentZlecenia extends Fragment implements SortListener, ZleceniaLoadedListner, SwipeRefreshLayout.OnRefreshListener {
 
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";
 
    private ArrayList<Zlecenia> listZlecenias = new ArrayList<>();
    private RecyclerView zleceniaArrived;
    private AdapterZlecenia adapterZlecenia;
 
    private SwipeRefreshLayout mSwipeRefreshLayout;
    private ZleceniaSorter mSorter = new ZleceniaSorter();
 
 
    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;
 
 
    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment FragmentZlecenia.
     */
    // TODO: Rename and change types and number of parameters
    public static FragmentZlecenia newInstance(String param1, String param2) {
        FragmentZlecenia fragment = new FragmentZlecenia();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }
 
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }
 
    public FragmentZlecenia() {
        // Required empty public constructor
    }
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }
 
    public void onSortByTime() {
        L.t(getActivity(), "Sort by time");
        mSorter.sortZleceniaByTime(listZlecenias);
        adapterZlecenia.notifyDataSetChanged();
    }
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
 
        View layout = inflater.inflate(R.layout.fragment_zlecenia, container, false);
 
        mSwipeRefreshLayout = (SwipeRefreshLayout) layout.findViewById(R.id.swipeZlecenia);
        mSwipeRefreshLayout.setOnRefreshListener(this);
 
 
        zleceniaArrived = (RecyclerView) layout.findViewById(R.id.listZlecenia);
        zleceniaArrived.setLayoutManager(new LinearLayoutManager(getActivity()));
 
        adapterZlecenia = new AdapterZlecenia(getActivity());
        zleceniaArrived.setAdapter(adapterZlecenia);
 
        if (savedInstanceState != null) {
            //if this fragment starts after a rotation or configuration change, load the existing zlecenias from DB
            listZlecenias = MyApplication.getWritableDatabase().getAllZlecenia();
        } else {
            //if this fragment starts for the first time, load the list of zlecenias from a database
            MyApplication.getWritableDatabase().deleteAll();
            //if the database is empty, trigger an AsycnTask to download zlecenias list from the web
            if (listZlecenias.isEmpty()) {
                new TaskLoadZlecenia(this).execute();
            }
        }
        //update your Adapter to containg the retrieved zlecenias
        adapterZlecenia.setListZlecenia(listZlecenias);
 
        return layout;
    }
 
 
    @Override
    public void onZleceniaLoaded(ArrayList<Zlecenia> listZlecenias) {
 
        L.m("onZleceniaLoaded Fragment");
 
        new TaskLoadZlecenia(this).execute();
        adapterZlecenia.setListZlecenia(listZlecenias);
    }
 
 
    @Override
    public void onRefresh() {
        L.t(getActivity(), "onRefresh");
        new TaskLoadZlecenia(this).execute();
 
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2015, 16:50     Организовать что бы AsyncTask запускался в фрагменте раз в определененное время
Посмотрите здесь:

Android Работа с AsyncTask
Запуск нескольких AsyncTask Android
Android FATAL EXCEPTION: AsyncTask #3
Android Отмена AsyncTask
Android Ожидание завершения AsyncTask
Заполнение ListView в AsyncTask Android
Как остановить AsyncTask? Android
ArrayList не заполняется в AsyncTask Android
Dropbox: syncNowAndWait в AsyncTask Android
Android Работа с потоками (AsyncTask)
Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити Android
Android Не работает AsyncTask

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru