Commit 796dca8f authored by fallenstardust's avatar fallenstardust

统一在homeactivity初始化cardLoader/imageLoader

onDestroy fragment时不关闭imageloader
parent 5a53e203
......@@ -36,33 +36,28 @@ import cn.garymb.ygomobile.base.BaseFragemnt;
import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.activities.WebActivity;
import cn.garymb.ygomobile.ui.adapters.CardListAdapter;
import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
import ocgcore.DataManager;
import ocgcore.LimitManager;
import ocgcore.StringManager;
import ocgcore.data.Card;
import ocgcore.data.LimitList;
public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallBack, CardSearcher.CallBack {
public static final String SEARCH_MESSAGE = "searchMessage";
long exitLasttime = 0;
private HomeActivity activity;
protected DrawerLayout mDrawerlayout;
protected CardSearcher mCardSelector;
protected CardListAdapter mCardListAdapter;
protected CardLoader mCardLoader;
protected boolean isLoad = false;
protected StringManager mStringManager = DataManager.get().getStringManager();
protected LimitManager mLimitManager = DataManager.get().getLimitManager();
private RecyclerView mListView;
private ImageLoader mImageLoader;
private String intentSearchMessage;
private boolean isInitCdbOk = false;
private String currentCardSearchMessage = "";
......@@ -76,6 +71,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
activity = (HomeActivity) getActivity();
layoutView = inflater.inflate(R.layout.fragment_search, container, false);
initView(layoutView);
showNewbieGuide();
......@@ -88,23 +84,21 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
mResult_count = layoutView.findViewById(R.id.search_result_count);
mDrawerlayout = layoutView.findViewById(R.id.drawer_layout);
mListView = layoutView.findViewById(R.id.list_cards);
mImageLoader = new ImageLoader(true);
mCardListAdapter = new CardListAdapter(getContext(), mImageLoader);
mCardListAdapter = new CardListAdapter(getContext(), activity.getImageLoader());
mCardListAdapter.setItemBg(true);
mListView.setLayoutManager(new FastScrollLinearLayoutManager(getContext()));
mListView.setAdapter(mCardListAdapter);
Button btn_search = layoutView.findViewById(R.id.btn_search);
btn_search.setOnClickListener((v) -> showSearch(true));
mCardLoader = new CardLoader(getContext());
mCardLoader.setCallBack(this);
mCardSelector = new CardSearcher(layoutView.findViewById(R.id.nav_view_list), mCardLoader);
activity.getCardLoader().setCallBack(this);
mCardSelector = new CardSearcher(layoutView.findViewById(R.id.nav_view_list), activity.getCardLoader());
mCardSelector.setCallBack(this);
setListeners();
DialogPlus dlg = DialogPlus.show(getContext(), null, getString(R.string.loading));
VUiKit.defer().when(() -> {
DataManager.get().load(true);
if (mLimitManager.getCount() > 0) {
mCardLoader.setLimitList(mLimitManager.getTopLimit());
if (activity.getmLimitManager().getCount() > 0) {
activity.getCardLoader().setLimitList(activity.getmLimitManager().getTopLimit());
}
}).fail((e) -> {
Toast.makeText(getContext(), R.string.tip_load_cdb_error, Toast.LENGTH_SHORT).show();
......@@ -112,7 +106,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
}).done((rs) -> {
dlg.dismiss();
isLoad = true;
mCardLoader.loadData();
activity.getCardLoader().loadData();
mCardSelector.initItems();
//数据库初始化完毕后搜索被传入的关键字
intentSearch(intentSearchMessage);
......@@ -200,7 +194,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
@Override
public void onDestroy() {
mImageLoader.close();
//mImageLoader.close();
super.onDestroy();
}
......@@ -285,7 +279,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
protected void showCard(CardListProvider provider, Card cardInfo, final int position) {
if (cardInfo != null) {
if (mCardDetail == null) {
mCardDetail = new CardDetail((BaseActivity) getActivity(), mImageLoader, mStringManager);
mCardDetail = new CardDetail((BaseActivity) getActivity(), activity.getImageLoader(), activity.getStringManager());
mCardDetail.setCallBack((card, favorite) -> {
if (mCardSelector.isShowFavorite()) {
mCardSelector.showFavorites(false);
......
......@@ -78,7 +78,6 @@ import cn.garymb.ygomobile.bean.events.DeckFile;
import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.activities.WebActivity;
import cn.garymb.ygomobile.ui.adapters.CardListAdapter;
......@@ -89,6 +88,7 @@ import cn.garymb.ygomobile.ui.cards.deck.DeckItem;
import cn.garymb.ygomobile.ui.cards.deck.DeckItemTouchHelper;
import cn.garymb.ygomobile.ui.cards.deck.DeckItemType;
import cn.garymb.ygomobile.ui.cards.deck.DeckLayoutManager;
import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.ui.mycard.mcchat.util.ImageUtil;
import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener;
......@@ -103,8 +103,6 @@ import cn.garymb.ygomobile.utils.YGODialogUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
import ocgcore.DataManager;
import ocgcore.LimitManager;
import ocgcore.StringManager;
import ocgcore.data.Card;
import ocgcore.data.LimitList;
import ocgcore.enums.LimitType;
......@@ -115,11 +113,9 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
protected RecyclerView mListView;
protected CardSearcher mCardSelector;
protected CardListAdapter mCardListAdapter;
protected CardLoader mCardLoader;
protected boolean isLoad = false;
protected ImageLoader mImageLoader;
protected StringManager mStringManager = DataManager.get().getStringManager();
protected LimitManager mLimitManager = DataManager.get().getLimitManager();
private HomeActivity activity;
protected int screenWidth;
//region ui onCreate/onDestroy
......@@ -144,6 +140,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
activity = (HomeActivity)getActivity();
layoutView = inflater.inflate(R.layout.fragment_deck_cards, container, false);
AnimationShake2(layoutView);
initView(layoutView);
......@@ -158,18 +155,16 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
public void initView(View layoutView) {
screenWidth = getResources().getDisplayMetrics().widthPixels;
mImageLoader = new ImageLoader(true);
mDrawerLayout = layoutView.findViewById(R.id.drawer_layout);
mListView = layoutView.findViewById(R.id.list_cards);
mCardListAdapter = new CardListAdapter(getContext(), mImageLoader);
mCardListAdapter = new CardListAdapter(getContext(), activity.getImageLoader());
mCardListAdapter.setEnableSwipe(true);
mListView.setLayoutManager(new FastScrollLinearLayoutManager(getContext()));
mListView.setAdapter(mCardListAdapter);
setListeners();
mCardLoader = new CardLoader(getContext());
mCardLoader.setCallBack(this);
mCardSelector = new CardSearcher(layoutView.findViewById(R.id.nav_view_list), mCardLoader);
activity.getCardLoader().setCallBack(this);
mCardSelector = new CardSearcher(layoutView.findViewById(R.id.nav_view_list), activity.getCardLoader());
mCardSelector.setCallBack(this);
tv_deck = layoutView.findViewById(R.id.tv_deck);
......@@ -179,7 +174,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
mLimitSpinner.setPopupBackgroundResource(R.color.colorNavy);
mRecyclerView = layoutView.findViewById(R.id.grid_cards);
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), 0, mRecyclerView.getPaddingRight(), mRecyclerView.getPaddingBottom());
mRecyclerView.setAdapter((mDeckAdapater = new DeckAdapater(getContext(), mRecyclerView, getImageLoader())));
mRecyclerView.setAdapter((mDeckAdapater = new DeckAdapater(getContext(), mRecyclerView, activity.getImageLoader())));
mRecyclerView.setLayoutManager(new DeckLayoutManager(getContext(), Constants.DECK_WIDTH_COUNT));
mDeckItemTouchHelper = new DeckItemTouchHelper(mDeckAdapater);
......@@ -248,10 +243,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
});
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
@Override
public void onResume() {
super.onResume();
......@@ -291,7 +282,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
@Override
public void onDestroy() {
mImageLoader.close();
//mImageLoader.close();
super.onDestroy();
}
......@@ -369,14 +360,14 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
//region load deck
private void loadDeckFromFile(File file) {
if (!mCardLoader.isOpen() || file == null || !file.exists()) {
if (!activity.getCardLoader().isOpen() || file == null || !file.exists()) {
setCurDeck(new DeckInfo(), false);
return;
}
DialogPlus dlg = DialogPlus.show(getContext(), null, getString(R.string.loading));
VUiKit.defer().when(() -> {
if (mCardLoader.isOpen() && file.exists()) {
return mDeckAdapater.read(mCardLoader, file, mCardLoader.getLimitList());
if (activity.getCardLoader().isOpen() && file.exists()) {
return mDeckAdapater.read(activity.getCardLoader(), file, activity.getCardLoader().getLimitList());
} else {
return new DeckInfo();
}
......@@ -392,8 +383,8 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
VUiKit.defer().when(() -> {
DataManager.get().load(true);
//默认第一个卡表
if (mLimitManager.getCount() > 0) {
mCardLoader.setLimitList(mLimitManager.getTopLimit());
if (activity.getmLimitManager().getCount() > 0) {
activity.getCardLoader().setLimitList(activity.getmLimitManager().getTopLimit());
}
File file = ydk;
if (file == null || !file.exists()) {
......@@ -408,8 +399,8 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
return new DeckInfo();
}
Log.i(TAG, "load ydk " + file);
if (mCardLoader.isOpen() && file.exists()) {
return mDeckAdapater.read(mCardLoader, file, mCardLoader.getLimitList());
if (activity.getCardLoader().isOpen() && file.exists()) {
return mDeckAdapater.read(activity.getCardLoader(), file, activity.getCardLoader().getLimitList());
} else {
return new DeckInfo();
}
......@@ -417,7 +408,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
isLoad = true;
dlg.dismiss();
mCardSelector.initItems();
initLimitListSpinners(mLimitSpinner, mCardLoader.getLimitList());
initLimitListSpinners(mLimitSpinner, activity.getCardLoader().getLimitList());
//设置当前卡组
if (rs.source != null) {
setCurDeck(rs, rs.source.getParent().equals(mSettings.getPackDeckDir()));
......@@ -542,7 +533,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
if (cardInfo != null) {
if (isShowCard()) return;
if (mCardDetail == null) {
mCardDetail = new CardDetail((BaseActivity) getActivity(), getImageLoader(), mStringManager);
mCardDetail = new CardDetail((BaseActivity) getActivity(), activity.getImageLoader(), activity.getStringManager());
mCardDetail.setOnCardClickListener(new CardDetail.OnCardClickListener() {
@Override
public void onOpenUrl(Card cardInfo) {
......@@ -1011,9 +1002,9 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
private void initLimitListSpinners(Spinner spinner, LimitList cur) {
List<SimpleSpinnerItem> items = new ArrayList<>();
List<String> limitLists = mLimitManager.getLimitNames();
List<String> limitLists = activity.getmLimitManager().getLimitNames();
int index = -1;
int count = mLimitManager.getCount();
int count = activity.getmLimitManager().getCount();
items.add(new SimpleSpinnerItem(0, getString(R.string.label_limitlist)));
for (int i = 0; i < count; i++) {
int j = i + 1;
......@@ -1033,7 +1024,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
setLimitList(mLimitManager.getLimit(SimpleSpinnerAdapter.getSelectText(spinner)));
setLimitList(activity.getmLimitManager().getLimit(SimpleSpinnerAdapter.getSelectText(spinner)));
}
@Override
......
......@@ -30,6 +30,8 @@ import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.cards.CardSearchFragment;
import cn.garymb.ygomobile.ui.cards.DeckManagerFragment;
......@@ -40,6 +42,9 @@ import cn.garymb.ygomobile.ui.settings.SettingFragment;
import cn.garymb.ygomobile.utils.OkhttpUtil;
import cn.garymb.ygomobile.utils.ScreenUtil;
import cn.garymb.ygomobile.utils.ServerUtil;
import ocgcore.DataManager;
import ocgcore.LimitManager;
import ocgcore.StringManager;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
......@@ -52,6 +57,8 @@ public abstract class HomeActivity extends BaseActivity implements BottomNavigat
private static final int TYPE_GET_VERSION_OK = 0;
private static final int TYPE_GET_VERSION_FAILED = 1;
private CardLoader cardLoader;
private ImageLoader imageLoader;
private BottomNavigationBar bottomNavigationBar;
private ShapeBadgeItem mShapeBadgeItem;
private TextBadgeItem mTextBadgeItem;
......@@ -103,6 +110,8 @@ public abstract class HomeActivity extends BaseActivity implements BottomNavigat
savedInstanceState.putParcelable("android:support:fragments", null);
}
super.onCreate(savedInstanceState);
cardLoader = new CardLoader(getActivity());
imageLoader = new ImageLoader();
setContentView(R.layout.activity_home);
setExitAnimEnable(false);
mBundle = new Bundle();
......@@ -297,6 +306,20 @@ public abstract class HomeActivity extends BaseActivity implements BottomNavigat
super.onStart();
}
public CardLoader getCardLoader() {
return cardLoader;
}
public ImageLoader getImageLoader() {
return imageLoader;
}
public StringManager getStringManager() {
return DataManager.get().getStringManager();
}
public LimitManager getmLimitManager() {
return DataManager.get().getLimitManager();
}
//检查是否有刘海
private void checkNotch() {
......
......@@ -61,7 +61,6 @@ import cn.garymb.ygomobile.bean.events.ExCardEvent;
import cn.garymb.ygomobile.bean.events.ServerInfoEvent;
import cn.garymb.ygomobile.ex_card.ExCardActivity;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.activities.WebActivity;
import cn.garymb.ygomobile.ui.adapters.ServerListAdapter;
import cn.garymb.ygomobile.ui.adapters.SimpleListAdapter;
......@@ -102,7 +101,6 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
private ServerListManager mServerListManager;
private CardManager mCardManager;
private CardDetailRandom mCardDetailRandom;
private ImageLoader mImageLoader;
//轮播图
private CardView cv_banner;
private TextView tv_banner_loading;
......@@ -199,7 +197,6 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
toggleAnimation(tv);
toggleAnimation(tv2);
mImageLoader = new ImageLoader(false);
mCardManager = DataManager.get().getCardManager();
}
......@@ -621,12 +618,12 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
Card cardInfo = cards.valueAt(y);
if (cardInfo == null)
return;
mCardDetailRandom = CardDetailRandom.genRandomCardDetail(getContext(), mImageLoader, cardInfo);
mCardDetailRandom = CardDetailRandom.genRandomCardDetail(getContext(), activity.getImageLoader(), cardInfo);
}
protected void openGame() {
YGOStarter.startGame(getActivity(), null);
getFragmentManager().beginTransaction().remove(activity.fragment_deck_cards).commit();
getParentFragmentManager().beginTransaction().remove(activity.fragment_deck_cards).commit();
}
private void duelAssistantCheck() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment