diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment.java b/app/src/main/java/com/gh/base/fragment/BaseFragment.java index 81228d6ce0..45d8fdd37a 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment.java @@ -9,14 +9,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; -import androidx.lifecycle.Lifecycle; - import com.gh.base.OnListClickListener; import com.gh.base.OnRequestCallBackListener; import com.gh.common.constant.Constants; @@ -33,6 +25,12 @@ import org.greenrobot.eventbus.ThreadMode; import java.lang.ref.WeakReference; import java.util.List; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; import butterknife.ButterKnife; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -185,7 +183,11 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB } public void toast(String msg) { - Utils.toast(getContext(), msg); + try { + Utils.toast(getContext(), msg); + } catch (Exception ignore) { + + } } public void toastLong(@StringRes int msg) { diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index 7dc9a38f71..0f4d2ea679 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -20,6 +20,7 @@ import com.halo.assistant.HaloApp; import static com.gh.common.constant.Constants.GAME_DETAIL_COME_IN; /** + * TODO 合并构建 intent 的重复代码 * Created by khy on 2017/3/24. * 游戏详情适配器 */ @@ -69,6 +70,22 @@ public class GameDetailActivity extends NormalActivity { */ public static void startGameDetailActivity(Context context, GameEntity gameEntity, String entrance, ExposureEvent traceEvent) { DataUtils.onMtaEvent(context, "详情页面", "游戏详情", gameEntity != null ? gameEntity.getName() : ""); + + Bundle bundle = new Bundle(); + + // TODO TraceEvent 为空时不该调用此方法才对 + if (BuildConfig.DEBUG) { + if (traceEvent == null) { + throw new IllegalArgumentException("没有曝光的 TraceEvent 不要调用这个方法"); + } + } + + if (traceEvent != null) { + ExposureEvent clickEvent = ExposureEvent.Companion.createEvent(gameEntity, traceEvent.getSource(), ExposureTraceUtils.INSTANCE + .appendTrace(traceEvent), ExposureType.CLICK); + ExposureManager.INSTANCE.log(clickEvent); + bundle.putParcelable(EntranceUtils.KEY_TRACE_EVENT, clickEvent); + } if (gameEntity != null && traceEvent != null @@ -82,12 +99,8 @@ public class GameDetailActivity extends NormalActivity { traceEvent.setPayload(forNewPayload.getPayload()); } - ExposureEvent clickEvent = ExposureEvent.Companion.createEvent(gameEntity, traceEvent.getSource(), ExposureTraceUtils.INSTANCE.appendTrace(traceEvent), ExposureType.CLICK); - ExposureManager.INSTANCE.log(clickEvent); - Bundle bundle = new Bundle(); bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance); bundle.putParcelable(GameEntity.TAG, gameEntity); - bundle.putParcelable(EntranceUtils.KEY_TRACE_EVENT, clickEvent); context.startActivity(getTargetIntent(context, GameDetailActivity.class, GameDetailFragment.class, bundle)); } @@ -95,6 +108,20 @@ public class GameDetailActivity extends NormalActivity { * 启动游戏详情页面 with 曝光事件 */ public static void startGameDetailActivity(Context context, String gameId, String entrance, ExposureEvent traceEvent) { + Bundle bundle = new Bundle(); + + // TODO TraceEvent 为空时不该调用此方法才对 + if (BuildConfig.DEBUG) { + if (traceEvent == null) { + throw new IllegalArgumentException("没有曝光的 TraceEvent 不要调用这个方法"); + } + } + + if (traceEvent != null) { + ExposureEvent clickEvent = ExposureEvent.Companion.createEvent(new GameEntity(gameId), traceEvent.getSource(), ExposureTraceUtils.INSTANCE.appendTrace(traceEvent), ExposureType.CLICK); + ExposureManager.INSTANCE.log(clickEvent); + bundle.putParcelable(EntranceUtils.KEY_TRACE_EVENT, clickEvent); + } if (traceEvent != null && !gameId.equals(traceEvent.getPayload().getGameId())) { @@ -106,13 +133,8 @@ public class GameDetailActivity extends NormalActivity { traceEvent.setPayload(forNewPayload.getPayload()); } - ExposureEvent clickEvent = ExposureEvent.Companion.createEvent(new GameEntity(gameId), traceEvent.getSource(), ExposureTraceUtils.INSTANCE.appendTrace(traceEvent), ExposureType.CLICK); - ExposureManager.INSTANCE.log(clickEvent); - - Bundle bundle = new Bundle(); bundle.putString(EntranceUtils.KEY_GAMEID, gameId); bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance); - bundle.putParcelable(EntranceUtils.KEY_TRACE_EVENT, clickEvent); context.startActivity(getTargetIntent(context, GameDetailActivity.class, GameDetailFragment.class, bundle)); } diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index 8b55072454..b47a1eda31 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -321,14 +321,17 @@ public class ViewImageActivity extends BaseActivity implements OnPageChangeListe @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { String url = urls.get(position); - + ImageRequest imageRequest = ImageRequest.fromUri(url); + boolean isInMemoryCache = mImagePipeline.isInBitmapMemoryCache(imageRequest); + boolean isInDiskCache = imageRequest != null && mImagePipeline.isInDiskCacheSync(imageRequest); + Gh_RelativeLayout view = (Gh_RelativeLayout) View.inflate(container.getContext(), R.layout.viewimage_normal_item, null); ZoomSimpleDraweeView imageView = view.findViewById(R.id.viewimage_iv_show); - if (mImagePipeline.isInBitmapMemoryCache(ImageRequest.fromUri(url)) || - mImagePipeline.isInDiskCacheSync(ImageRequest.fromUri(url)) || - NetworkUtils.isWifiOr4GConnected(ViewImageActivity.this) || - url.contains(".gif")) { + if (isInMemoryCache + || isInDiskCache + || NetworkUtils.isWifiOr4GConnected(ViewImageActivity.this) + || url.contains(".gif")) { loadImage(url, imageView); } else { ImageUtils.addLimitWidthAndLoad(imageView, url, mLimitWidth, imageInfo -> { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java index f70d0b875f..9416b321d3 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -16,8 +16,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import androidx.collection.ArrayMap; - import com.gh.common.constant.Config; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureUtils; @@ -58,6 +56,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import androidx.collection.ArrayMap; + /** * Created by LGT on 2016/9/27. */ @@ -501,7 +501,11 @@ public class PlatformAdapter extends BaseRecyclerAdapter { "操作", "点击插件化", "网络状态", DeviceUtils.getNetwork(HaloApp.getInstance().getApplication())); - String path = mEntryMap.get(apkEntity.getUrl()).getPath(); + DownloadEntity downloadEntity = mEntryMap.get(apkEntity.getUrl()); + + if (downloadEntity == null) return; + + String path = mEntryMap.get(downloadEntity).getPath(); if (FileUtils.isEmptyFile(path)) { Utils.toast(mContext, R.string.install_failure_hint); mEntryMap.remove(apkEntity.getUrl()); diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.java b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.java index 46a9ab20dc..4d5c91067b 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.java +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.java @@ -271,6 +271,8 @@ public class GameServersContentFragment extends BaseFragment { @Override public void loadError() { + if (!isAdded()) return; + super.loadError(); toast(R.string.loading_failed_hint); mKaiFuTimeLl.setVisibility(View.GONE);