我使用Asynctask通过Volley加载数据。我想在n分钟后调用AsyncTask,也许这是重复的,也是一个愚蠢的问题,但我无法想象如何实现它。也许我需要在我的片段中实现AsyncTask?
这是我的AsyncTask.class
package com.aa.qc.callbacks;
import com.aa.qc.pojo.Zlecenia;
import java.util.ArrayList;
public interface ZleceniaLoadedListner {
public void onZleceniaLoaded(ArrayList<Zlecenia> listZlecenias);
}
这是listner.class
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();
}
}
这是我的片段,我想重复asynctask(我有两个标签的活动,每个标签是一个片段)
onClick()
答案 0 :(得分:0)
如果你想延迟n秒,你可以像这样使用CountDownTimer类
new CountDownTimer(n * 1000, n * 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
//invokeAllTheThings!
}
}.start();
它会成功:)