我已经实现了从web下载数据,然后在两个ActionBar.Tab
s中显示它的应用程序。我有一个问题。如果我从一个选项卡切换到另一个选项卡,应用程序将开始另一次下载,而下载未完成时,应用程序将冻结。如果互联网连接速度慢,它变得非常烦人。我决定将ProgressDialog
添加到应用程序以向用户显示应用程序正在从网站下载数据。我添加了一段执行ProgressDialog
到AsyncTask
的代码,该代码执行下载,但这并没有帮助。我明白为什么出现这种情况,但无法找到怎样的方式来解决它:(将被安装到标签被表示为Fragment
类的实例在ActionBar.Tabs问题之间切换
数据,创建后,该实例将被添加到transaction
,只有经过加入mFragment
对象transaction
,应用切换到另一个标签
这是tabListener
代码部分:
// ...
@Override
public void onTabSelected(Tab tab, FragmentTransaction transaction) {
if (mFragment == null) {
/*
* Creation of ParkFragment is the reason why app locks!! Because in
* ParkFragment data is being downloaded from web
*/
mFragment = new ParkFragment(mUrl, mActivity);
/*
* mFragment can't be added to transaction until downloading is
* finished, that's why app doesn't switch fast
*/
transaction.add(android.R.id.content, mFragment, mTag);
} else {
transaction.attach(mFragment);
}
}
请,如果任何人有任何想法如何实现ProgressDialog
,以避免在翼片之间的切换的延迟,与它分享。
谢谢您的阅读。
更新:我已阅读这个问题的答案,但不明白如何实施将帮助我管理延迟:Changing Tabs is Slow/Laggy - Using Fragments。
UPD:
public class ParkFragment extends ListFragment {
private ArrayList<Cinemas> cinema;
private CinemasAdapter cinemaAdapter;
private String url;
private Activity activity;
public ParkFragment (String cinema,Activity activ){
url = cinema;
activity = activ;
}
public void onCreate(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
cinema = new Handler().handle(url,activity);
cinemaAdapter = new CinemasAdapter(activity, R.layout.movie_data_row, cinema);
setListAdapter(cinemaAdapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Cinemas movie = cinemaAdapter.getItem(position);
Intent intent = new Intent (activity, More.class);
intent.putExtra("Cinemas", movie);
intent.putExtra("data", movie.getBitmap());
Bundle translateBundle =
ActivityOptions.makeCustomAnimation(activity,
R.anim.slide_in_left, R.anim.slide_out_left).toBundle();
startActivity (intent, translateBundle);
}
}
谢谢你的回答!我已经添加了“ParkFragment”的代码。我没有在我的应用程序中使用数据库..有没有其他方法可以解决这个问题? – 2013-03-23 14:08:39
@AvanJogia谢谢,我更新了答案。 – 2013-03-23 14:24:31