diff --git a/app/src/main/java/com/gh/base/AppController.java b/app/src/main/java/com/gh/base/AppController.java index df24d2c41a..1d5fb12957 100644 --- a/app/src/main/java/com/gh/base/AppController.java +++ b/app/src/main/java/com/gh/base/AppController.java @@ -38,7 +38,7 @@ public class AppController extends Application { //快传文件发送单线程 public static Executor FILE_SENDER_EXECUTOR = Executors.newSingleThreadExecutor(); //快传文件发送主要的线程池 - public static Executor MAIN_EXECUTOR = Executors.newFixedThreadPool(5); + public static Executor MAIN_EXECUTOR = Executors.newCachedThreadPool(); private static AppController mInstance; private static ArrayMap objectMap = new ArrayMap<>(); diff --git a/app/src/main/java/com/gh/base/AppUncaughtHandler.java b/app/src/main/java/com/gh/base/AppUncaughtHandler.java index 6b5c6d39a6..f6c9ab65c2 100644 --- a/app/src/main/java/com/gh/base/AppUncaughtHandler.java +++ b/app/src/main/java/com/gh/base/AppUncaughtHandler.java @@ -41,7 +41,7 @@ public class AppUncaughtHandler implements UncaughtExceptionHandler { // 如果用户没有处理则让系统默认的异常处理器来处理 mDefaultHandler.uncaughtException(thread, ex); } else { - new Thread() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { Looper.prepare(); @@ -49,7 +49,7 @@ public class AppUncaughtHandler implements UncaughtExceptionHandler { "\"光环助手\"发生错误", Toast.LENGTH_SHORT).show(); Looper.loop(); } - }.start(); + }); try { Thread.sleep(1000); } catch (InterruptedException e) { diff --git a/app/src/main/java/com/gh/common/util/MessageShareUtils.java b/app/src/main/java/com/gh/common/util/MessageShareUtils.java index 9e2245249e..ef05af7dca 100644 --- a/app/src/main/java/com/gh/common/util/MessageShareUtils.java +++ b/app/src/main/java/com/gh/common/util/MessageShareUtils.java @@ -15,7 +15,7 @@ import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Gravity; import android.view.KeyEvent; -import android.view.LayoutInflater; +import android.support.v4.content.*; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -395,8 +395,29 @@ public class MessageShareUtils { @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(mContext).inflate(R.layout.share_popup_item, parent, false); - return new ViewHolder(view); + LinearLayout linearLayout = new LinearLayout(mContext); + linearLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(mContext, itemSize))); + linearLayout.setOrientation(LinearLayout.VERTICAL); + linearLayout.setGravity(Gravity.CENTER_HORIZONTAL); + linearLayout.setBackgroundResource(R.drawable.cardview_item_style); + + ImageView shareLogo = new ImageView(mContext); + LinearLayout.LayoutParams logoParams = new LinearLayout.LayoutParams(DisplayUtils.dip2px(mContext, picSize), DisplayUtils.dip2px(mContext, picSize)); + logoParams.setMargins(0, DisplayUtils.dip2px(mContext, 10), 0, 0); + shareLogo.setLayoutParams(logoParams); + + TextView shareLabel = new TextView(mContext); + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + layoutParams.setMargins(0, DisplayUtils.dip2px(mContext, 10), 0, 0); + shareLabel.setLayoutParams(layoutParams); + shareLabel.setGravity(Gravity.CENTER); + shareLabel.setTextColor(ContextCompat.getColor(mContext, R.color.text_3a3a3a)); + shareLabel.setTextSize(marImg); + + linearLayout.addView(shareLogo); + linearLayout.addView(shareLabel); + + return new ViewHolder(linearLayout); } @Override diff --git a/app/src/main/java/com/gh/common/util/PlatformUtils.java b/app/src/main/java/com/gh/common/util/PlatformUtils.java index adf5366d27..772ee857af 100644 --- a/app/src/main/java/com/gh/common/util/PlatformUtils.java +++ b/app/src/main/java/com/gh/common/util/PlatformUtils.java @@ -7,6 +7,7 @@ import android.os.Handler; import android.support.v4.util.ArrayMap; import android.text.TextUtils; +import com.gh.base.AppController; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.PlatformEntity; import com.gh.gamecenter.eventbus.EBReuse; @@ -149,7 +150,7 @@ public class PlatformUtils { } } if (urls.size() != 0) { - new Thread() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { int success = 0; @@ -174,7 +175,7 @@ public class PlatformUtils { } isCheck = false; } - }.start(); + }); } else { isCheck = false; } diff --git a/app/src/main/java/com/gh/common/util/QRCodeUtils.java b/app/src/main/java/com/gh/common/util/QRCodeUtils.java index 9b9f9aeee9..9353fcf315 100644 --- a/app/src/main/java/com/gh/common/util/QRCodeUtils.java +++ b/app/src/main/java/com/gh/common/util/QRCodeUtils.java @@ -28,14 +28,14 @@ import rx.schedulers.Schedulers; * Created by khy on 2016/12/1. */ public class QRCodeUtils { - public static void setQRCode(final Context context, final String newsId, final ImageView mShareQrCodeDv) { + + public static void setQRCode(final Context context, final String qrBody, final ImageView mShareQrCodeDv) { Observable .create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { String filePath = context.getExternalCacheDir().getPath() + "/ShareImg/ShareQRCode.jpg"; - boolean success = QRCodeUtils.createQRImage("http://www.ghzhushou.com/article/" + newsId + ".html?source=appshare200" - , 200, 200, filePath, context); + boolean success = QRCodeUtils.createQRImage(qrBody, 200, 200, filePath, context); if (success) { subscriber.onNext(filePath); } @@ -62,7 +62,7 @@ public class QRCodeUtils { * @param filePath 用于存储二维码图片的文件路径 * @return 生成二维码及保存文件是否成功 */ - public static boolean createQRImage(String content, int widthPix, int heightPix, String filePath, Context context) { + private static boolean createQRImage(String content, int widthPix, int heightPix, String filePath, Context context) { try { if (content == null || "".equals(content)) { return false; diff --git a/app/src/main/java/com/gh/common/util/ShareUtils.java b/app/src/main/java/com/gh/common/util/ShareUtils.java index a8e45542cb..75280c9bea 100644 --- a/app/src/main/java/com/gh/common/util/ShareUtils.java +++ b/app/src/main/java/com/gh/common/util/ShareUtils.java @@ -142,6 +142,8 @@ public class ShareUtils { this.ispopupWindow = ispopupWindow; View contentView = View.inflate(mContext, R.layout.share_popup_layout, null); + contentView.setFocusable(true); + contentView.setFocusableInTouchMode(true); RecyclerView shareRecyclerView = (RecyclerView) contentView.findViewById(R.id.share_rv); shareRecyclerView.setPadding(DisplayUtils.dip2px(mContext, 20), DisplayUtils.dip2px(mContext, 10), DisplayUtils.dip2px(mContext, 20), 0); diff --git a/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java b/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java index 309fe41c75..7f56c8c389 100644 --- a/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java @@ -373,7 +373,7 @@ public class ChooseReceiverActivity extends BaseActivity implements View.OnClick AppController.remove("FileInfo"); } //发送UDP通知信息到 文件接收方 开启ServerSocketRunnable private void createSendMsgToServerRunnable(final String ipAddress) { - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { try { @@ -384,9 +384,8 @@ public class ChooseReceiverActivity extends BaseActivity implements View.OnClick Utils.log("UDP通信异常--startFileSenderServer" + e.toString()); e.printStackTrace(); } - } - }).start(); + }); } static class MyHandler extends Handler { diff --git a/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java b/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java index 716096d735..ba4050d381 100644 --- a/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java +++ b/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java @@ -310,9 +310,9 @@ public class FileReceiverActivity extends BaseActivity implements OnReceiverCanc */ private void initServer() { mReceiverServer = new ServerRunnable(Constant.DEFAULT_SERVER_PORT); - new Thread(mReceiverServer).start(); + AppController.MAIN_EXECUTOR.execute(mReceiverServer); - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { try { @@ -322,8 +322,7 @@ public class FileReceiverActivity extends BaseActivity implements OnReceiverCanc e.printStackTrace(); } } - }).start(); - + }); } private void receiverData() throws Exception { @@ -361,7 +360,7 @@ public class FileReceiverActivity extends BaseActivity implements OnReceiverCanc } private void sendMessageToSender(final String sendData) throws Exception { - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { try { @@ -375,7 +374,7 @@ public class FileReceiverActivity extends BaseActivity implements OnReceiverCanc e.printStackTrace(); } } - }).start(); + }); } /** diff --git a/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java b/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java index 48f9081127..ff515125d3 100644 --- a/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java +++ b/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java @@ -114,7 +114,7 @@ public class FileSenderActivity extends BaseActivity implements FileSenderAdapte if (resultCode == 0x130 && requestCode == 0x178) { mSenderAdapter.notifyDataSetChanged(); initUserData(); - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { try { @@ -123,7 +123,7 @@ public class FileSenderActivity extends BaseActivity implements FileSenderAdapte e.printStackTrace(); } } - }).start(); + }); } } @@ -319,7 +319,7 @@ public class FileSenderActivity extends BaseActivity implements FileSenderAdapte } private void startReceiver() { - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { try { @@ -328,7 +328,7 @@ public class FileSenderActivity extends BaseActivity implements FileSenderAdapte e.printStackTrace(); } } - }).start(); + }); } public void colsePage() { diff --git a/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java b/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java index e35d188aaf..92a729564d 100644 --- a/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java +++ b/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java @@ -140,6 +140,8 @@ public class KcSelectGameActivity extends BaseActivity { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); + if (dy == 0) return; + int position = layoutManager.findFirstVisibleItemPosition(); int gameSize = mAdapter.getGameSize(); diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 5caa5b3b6c..2c27f0e3da 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -500,7 +500,7 @@ public class MainActivity extends BaseActivity implements OnClickListener { * 更新关注列表数据 */ private void update() { - new Thread() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { final List installed = new ArrayList<>(); @@ -576,7 +576,7 @@ public class MainActivity extends BaseActivity implements OnClickListener { // 检查可插件化游戏 checkGamePlugin(); } - }.start(); + }); } private void checkGameUpdate() { @@ -711,7 +711,7 @@ public class MainActivity extends BaseActivity implements OnClickListener { checkPermission(); if (isNewFirstLaunch || TokenUtils.getDeviceId(this) == null) { - new Thread() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { // 注册设备 @@ -729,7 +729,7 @@ public class MainActivity extends BaseActivity implements OnClickListener { initConcern(); // 初始化关注 LibaoUtils.getCunHaoXiang(MainActivity.this, true); } - }.start(); + }); } else { updateUserGhzs(); } diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java index f3199238ae..74965fd743 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java @@ -106,7 +106,8 @@ public class ShareCardActivity extends BaseActivity { }, 200); if (!TextUtils.isEmpty(newsId)) { - QRCodeUtils.setQRCode(this, newsId, mShareQrCodeDv); + String qrBody = "http://www.ghzhushou.com/article/" + newsId + ".html?source=appshare200"; + QRCodeUtils.setQRCode(this, qrBody, mShareQrCodeDv); } } diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java index 6b12aa6683..af6df1b05c 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java @@ -153,7 +153,8 @@ public class ShareCardPicActivity extends BaseActivity { } if (!TextUtils.isEmpty(newsId)) { - QRCodeUtils.setQRCode(this, newsId, mShareQrCodeDv); + String qrBody = "http://www.ghzhushou.com/article/" + newsId + ".html?source=appshare200"; + QRCodeUtils.setQRCode(this, qrBody, mShareQrCodeDv); } } diff --git a/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java b/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java index e4f5d6e43b..77338876f9 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java @@ -60,30 +60,11 @@ public class ShareGhActivity extends BaseActivity { ButterKnife.bind(this); mGhAddress.setText(Html.fromHtml("" + "www.ghzhushou.com" + "")); - createQrCode(); + QRCodeUtils.setQRCode(this, "http://www.ghzhushou.com/link?source=appshare100", mGhQrcode); ShareUtils.getInstance(this).showShareWindows(mShareRl, "http://www.ghzhushou.com/link?source=appshare300", "光环助手" , "http://image.ghzhushou.com/pic/57d604808ab49e467d8b4568.png", null, false, false); } - private void createQrCode() { - new Thread(new Runnable() { - @Override - public void run() { - final String filePath = getExternalCacheDir().getPath() + "/ShareImg/ShareQRCode.jpg"; - boolean success = QRCodeUtils.createQRImage("http://www.ghzhushou.com/link?source=appshare100" - , 200, 200, filePath, ShareGhActivity.this); - if (success) { - runOnUiThread(new Runnable() { - @Override - public void run() { - mGhQrcode.setImageBitmap(BitmapFactory.decodeFile(filePath)); - } - }); - } - } - }).start(); - } - @OnClick(R.id.wifi_share_btn) public void skipWifiShare() { Intent intent = new Intent(this, ShareGhWfifActivity.class); diff --git a/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java b/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java index 797e18a801..94853d51aa 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java @@ -272,7 +272,7 @@ public class ShareGhWfifActivity extends BaseActivity { } private void initMicroServer() { - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { try { @@ -321,7 +321,7 @@ public class ShareGhWfifActivity extends BaseActivity { } } } - }).start(); + }); } private KcWebRequestEntity hanlderSocket(Socket socket) { diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index fcf5b08b7a..769aedd4b7 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -38,6 +38,7 @@ import com.facebook.imagepipeline.image.ImageInfo; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; +import com.gh.base.AppController; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.ImageUtils; @@ -225,7 +226,7 @@ public class ViewImageActivity extends Activity implements OnPageChangeListener private void checkUrl(final String url, final ZoomSimpleDraweeView imageView) { newUrls = new HashMap<>(); - new Thread() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { try { @@ -259,7 +260,7 @@ public class ViewImageActivity extends Activity implements OnPageChangeListener e.printStackTrace(); } } - }.start(); + }); } private void loadImage(String url, final ZoomSimpleDraweeView imageView) { diff --git a/app/src/main/java/com/gh/gamecenter/VoteActivity.java b/app/src/main/java/com/gh/gamecenter/VoteActivity.java index 7370d26530..3c4cf950ac 100644 --- a/app/src/main/java/com/gh/gamecenter/VoteActivity.java +++ b/app/src/main/java/com/gh/gamecenter/VoteActivity.java @@ -217,19 +217,14 @@ public class VoteActivity extends BaseActivity implements SwipeRefreshLayout.OnR dialog.setContentView(view); dialog.show(); - new Thread() { + mVoteRv.postDelayed(new Runnable() { @Override public void run() { - try { - sleep(300); - } catch (InterruptedException e) { - e.printStackTrace(); - } InputMethodManager imm = (InputMethodManager) getApplicationContext() .getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(input, InputMethodManager.SHOW_FORCED); } - }.start(); + }, 300); } private void postVersionVote(final String name, final boolean isCheck, final boolean isNewVote) { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java index 3ea6d6b509..66bfb4fdf5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java @@ -28,6 +28,11 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; +import com.gh.gamecenter.retrofit.Response; + +import rx.Observable; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; /** * Created by khy on 2017/1/24. @@ -66,16 +71,22 @@ public class CleanApkAdapter extends BaseRecyclerAdapter } private void init() { - new Thread(new Runnable() { - @Override - public void run() { - // 扫描和获取apk数据 分步操作 尽量避免 StackoverflowError - FindAllAPKPath(Environment.getExternalStorageDirectory()); - LoadApkData(); - - mHandler.post(new Runnable() { + Observable + .create(new Observable.OnSubscribe() { @Override - public void run() { + public void call(rx.Subscriber subscriber) { + // 扫描和获取apk数据 分步操作 尽量避免 StackoverflowError + FindAllAPKPath(Environment.getExternalStorageDirectory()); + LoadApkData(); + subscriber.onCompleted(); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onCompleted() { + super.onCompleted(); mIsScanOver = true; mScanListener.onScanOver(); if (mApkList.size() == 0) { @@ -84,8 +95,6 @@ public class CleanApkAdapter extends BaseRecyclerAdapter notifyItemRangeChanged(0, getItemCount()); } }); - } - }).start(); } /** diff --git a/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java index 7a3f86605b..0e52e0cd17 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java @@ -32,6 +32,7 @@ import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.InstallGameEntity; import com.gh.gamecenter.kuaichuan.FileInfo; import com.gh.gamecenter.manager.ConcernManager; +import com.gh.gamecenter.retrofit.Response; import java.io.File; import java.text.DecimalFormat; @@ -39,6 +40,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import rx.Observable; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + /** * Created by khy on 2017/1/20. */ @@ -59,8 +64,6 @@ public class KcSelectGameAdapter extends BaseRecyclerAdapter { private boolean mIsLoadApp; - private Handler mHandler = new Handler(); - public KcSelectGameAdapter(Context context, TextView selectCount, TextView installCount, ProgressBar selectPb) { super(context); @@ -77,88 +80,87 @@ public class KcSelectGameAdapter extends BaseRecyclerAdapter { sendOverList = (List) AppController.get("FileInfo", false); ConcernManager cManager = new ConcernManager(mContext); - final List runnableGame = cManager.getInstalledGame(); - new Thread(new Runnable() { - @Override - public void run() { - init(runnableGame); - } - }).start(); + List runnableGame = cManager.getInstalledGame(); + init(runnableGame); } //初始化 - private void init(List runnableGame) { - PackageManager pm = mContext.getPackageManager(); - List installedPackages = pm.getInstalledPackages(0); + private void init(final List runnableGame) { - List arrInstallPackage = new ArrayList<>(); + rx.Observable + .create(new Observable.OnSubscribe() { - for (ConcernInfo concernInfo : runnableGame) { - for (String s : concernInfo.getPackageNames().keySet()) { - if (concernInfo.getPackageNames().get(s)) { - arrInstallPackage.add(s); - } - } - } + @Override + public void call(rx.Subscriber subscriber) { + PackageManager pm = mContext.getPackageManager(); + List installedPackages = pm.getInstalledPackages(0); - List game = new ArrayList<>(); // 防止数据加载时recyclerView首次刷新时造成的数据残缺 - List apk = new ArrayList<>(); + List arrInstallPackage = new ArrayList<>(); - for (PackageInfo installedPackage : installedPackages) { - if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { - InstallGameEntity installGameEntity = new InstallGameEntity(); - installGameEntity.setGamePath(installedPackage.applicationInfo.sourceDir); - try { - Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); - installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable)); - - installGameEntity.setGameVersion(installedPackage.versionName); - installGameEntity.setGameName(installedPackage.applicationInfo.loadLabel(pm).toString()); - installGameEntity.setPackageName(installedPackage.packageName); - - File file = new File(installedPackage.applicationInfo.sourceDir); - installGameEntity.setGameSize(file.length()); - boolean isAdd = false; - for (int j = 0; j < arrInstallPackage.size(); j++) { - if (installedPackage.packageName.equals(arrInstallPackage.get(j))) { - game.add(installGameEntity); - isAdd = true; - break; + for (ConcernInfo concernInfo : runnableGame) { + for (String s : concernInfo.getPackageNames().keySet()) { + if (concernInfo.getPackageNames().get(s)) { + arrInstallPackage.add(s); + } + } } + + List game = new ArrayList<>(); // 防止数据加载时recyclerView首次刷新时造成的数据残缺 + List apk = new ArrayList<>(); + + for (PackageInfo installedPackage : installedPackages) { + if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { + InstallGameEntity installGameEntity = new InstallGameEntity(); + installGameEntity.setGamePath(installedPackage.applicationInfo.sourceDir); + try { + Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); + installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable)); + + installGameEntity.setGameVersion(installedPackage.versionName); + installGameEntity.setGameName(installedPackage.applicationInfo.loadLabel(pm).toString()); + installGameEntity.setPackageName(installedPackage.packageName); + + File file = new File(installedPackage.applicationInfo.sourceDir); + installGameEntity.setGameSize(file.length()); + boolean isAdd = false; + for (int j = 0; j < arrInstallPackage.size(); j++) { + if (installedPackage.packageName.equals(arrInstallPackage.get(j))) { + game.add(installGameEntity); + isAdd = true; + break; + } + } + + if (!isAdd) { + apk.add(installGameEntity); + } + } catch (Exception e) { + + } + } + } + + mGameList.addAll(game); + mApkList.addAll(apk); + + for (int i = 0; i < (mGameList.size() + mApkList.size() + 1); i++) { + mSelectPosition.put(i, false); + } + + subscriber.onCompleted(); } - - if (!isAdd) { - apk.add(installGameEntity); + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onCompleted() { + super.onCompleted(); + mSelectPb.setVisibility(View.GONE); + mInstallCount.setText("已安装的游戏(" + mGameList.size() + ")"); + notifyItemChanged(1, getItemCount() - 1); } - } catch (Exception e) { - - } - } - } - - mGameList.addAll(game); - mApkList.addAll(apk); - - for (int i = 0; i < (mGameList.size() + mApkList.size() + 1); i++) { - mSelectPosition.put(i, false); - } - - mHandler.post(new Runnable() { - @Override - public void run() { - notifyItemRangeChanged(0, getItemCount() - 1); // TODO 刷新一次顶部标题栏消失?? - } - }); - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - mSelectPb.setVisibility(View.GONE); - mInstallCount.setText("已安装的游戏(" + mGameList.size() + ")"); - notifyDataSetChanged(); - } - }, 100); - - + }); } @Override @@ -179,6 +181,7 @@ public class KcSelectGameAdapter extends BaseRecyclerAdapter { textView.setLayoutParams(params); textView.setGravity(Gravity.CENTER_VERTICAL); textView.setPadding(DisplayUtils.dip2px(mContext, 20), 0, 0, 0); + textView.setTextColor(ContextCompat.getColor(mContext, R.color.title)); textView.setBackgroundColor(Color.WHITE); textView.setText("已安装的应用(" + mApkList.size() + ")"); return new TitleViewHolder(textView); diff --git a/app/src/main/java/com/gh/gamecenter/changeskin/ChangeSkinUtils.java b/app/src/main/java/com/gh/gamecenter/changeskin/ChangeSkinUtils.java index 25b5959a12..d918b9b8d4 100644 --- a/app/src/main/java/com/gh/gamecenter/changeskin/ChangeSkinUtils.java +++ b/app/src/main/java/com/gh/gamecenter/changeskin/ChangeSkinUtils.java @@ -7,6 +7,7 @@ import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; +import com.gh.base.AppController; import com.gh.common.util.Utils; import com.gh.gamecenter.R; import com.gh.gamecenter.gamedetail.GameDetailSkinViewHolder; @@ -315,7 +316,7 @@ public class ChangeSkinUtils { } private static void startCheckMD5Thread() { - final Thread checkMD5Thrad = new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { localMD5Num = FileMD5Utils.getDirNum(new File(filePath)); @@ -326,7 +327,6 @@ public class ChangeSkinUtils { handler.sendMessage(msg); } }); - checkMD5Thrad.start(); } //解析json数据 diff --git a/app/src/main/java/com/gh/gamecenter/changeskin/DownloadUtils.java b/app/src/main/java/com/gh/gamecenter/changeskin/DownloadUtils.java index ca3f7834ca..71e6a11b66 100644 --- a/app/src/main/java/com/gh/gamecenter/changeskin/DownloadUtils.java +++ b/app/src/main/java/com/gh/gamecenter/changeskin/DownloadUtils.java @@ -3,6 +3,7 @@ package com.gh.gamecenter.changeskin; import android.os.Handler; import android.os.Message; +import com.gh.base.AppController; import com.gh.common.util.Utils; import java.io.BufferedInputStream; @@ -84,7 +85,7 @@ public class DownloadUtils { //下载网络json public static void downloadJson(final String params, final Handler handler) { - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { InputStream is = null; @@ -128,10 +129,8 @@ public class DownloadUtils { urlConnection.disconnect(); } } - } - }).start(); - + }); } private static byte[] readStream(InputStream inputStream) throws IOException { diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java index 5a4809fe3f..5191d5e1a3 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java @@ -186,7 +186,7 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen reuse_nodata_skip.setVisibility(View.GONE); TextView reuse_nodata_skip_tv_hint = (TextView) view.findViewById(R.id.reuse_nodata_skip_tv_hint); reuse_nodata_skip_tv_hint.setText("暂无下载"); - TextView reuse_nodata_skip_tv_btn = (TextView) view.findViewById(R.id.reuse_nodata_skip_tv_btn); + final TextView reuse_nodata_skip_tv_btn = (TextView) view.findViewById(R.id.reuse_nodata_skip_tv_btn); reuse_nodata_skip_tv_btn.setText("去首页看看"); reuse_nodata_skip_tv_btn.setOnClickListener(new View.OnClickListener() { @Override @@ -194,17 +194,13 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen Intent intent = new Intent(getActivity(), MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); getActivity().startActivity(intent); - new Thread() { + + reuse_nodata_skip_tv_btn.postDelayed(new Runnable() { @Override public void run() { - try { - sleep(300); - } catch (InterruptedException e) { - e.printStackTrace(); - } EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_GAMEFRAGMENT, 0)); } - }.start(); + }, 300); } }); diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java index 1a283cae87..0e7b2de888 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java @@ -60,7 +60,7 @@ public class GameUpdateFragment extends Fragment { reuse_nodata_skip.setVisibility(View.GONE); TextView reuse_nodata_skip_tv_hint = (TextView) view.findViewById(R.id.reuse_nodata_skip_tv_hint); reuse_nodata_skip_tv_hint.setText("暂无更新"); - TextView reuse_nodata_skip_tv_btn = (TextView) view.findViewById(R.id.reuse_nodata_skip_tv_btn); + final TextView reuse_nodata_skip_tv_btn = (TextView) view.findViewById(R.id.reuse_nodata_skip_tv_btn); reuse_nodata_skip_tv_btn.setText("去首页看看"); reuse_nodata_skip_tv_btn.setOnClickListener(new View.OnClickListener() { @Override @@ -68,17 +68,12 @@ public class GameUpdateFragment extends Fragment { Intent intent = new Intent(getActivity(), MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); getActivity().startActivity(intent); - new Thread() { + reuse_nodata_skip_tv_btn.postDelayed(new Runnable() { @Override public void run() { - try { - sleep(300); - } catch (InterruptedException e) { - e.printStackTrace(); - } EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_GAMEFRAGMENT, 0)); } - }.start(); + }, 300); } }); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java index e6515b5199..fb14a5d417 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java @@ -291,7 +291,7 @@ public class FuLiAdapter extends BaseRecyclerAdapter { content.setVisibility(View.VISIBLE); TextView tv = new TextView(mContext); - tv.setText("查看游戏介绍→"); + tv.setText("点击查看游戏介绍→"); tv.setGravity(Gravity.CENTER); tv.setPadding(0, DisplayUtils.dip2px(mContext, 8), 0, DisplayUtils.dip2px(mContext, 80)); tv.setTextColor(ContextCompat.getColor(mContext, R.color.c7c7c7)); diff --git a/app/src/main/java/com/gh/gamecenter/manager/ConcernManager.java b/app/src/main/java/com/gh/gamecenter/manager/ConcernManager.java index 022162a976..95497d61d4 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/ConcernManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/ConcernManager.java @@ -4,6 +4,7 @@ import android.content.Context; import android.support.v4.util.ArrayMap; import android.text.TextUtils; +import com.gh.base.AppController; import com.gh.common.util.PackageUtils; import com.gh.common.util.TrafficUtils; import com.gh.gamecenter.db.ConcernDao; @@ -43,7 +44,7 @@ public class ConcernManager { * 批量添加关注 */ public void addByList(final ArrayList list) { - new Thread() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { ArrayList concernList = new ArrayList<>(); @@ -56,7 +57,7 @@ public class ConcernManager { addConcern(concernList); EventBus.getDefault().post(new EBConcernChanged()); } - }.start(); + }); } private ConcernInfo createConcern(GameEntity gameEntity) { @@ -113,7 +114,7 @@ public class ConcernManager { * 根据GameEntity添加一个关注 */ public void addByEntity(final GameEntity gameEntity) { - new Thread() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { ConcernInfo concernInfo = findConcernById(gameEntity.getId()); @@ -124,7 +125,7 @@ public class ConcernManager { } EventBus.getDefault().post(new EBConcernChanged(gameEntity.getId(), true)); } - }.start(); + }); } /** diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java index 123db21bb3..dd601e93b1 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -112,7 +112,7 @@ class InstallFragmentAdapter extends BaseRecyclerAdapter { if (runnableGame.isEmpty()) { fragment.loadEmpty(); } else { - new Thread(new Runnable() { + AppController.MAIN_EXECUTOR.execute(new Runnable() { @Override public void run() { init(); @@ -124,7 +124,7 @@ class InstallFragmentAdapter extends BaseRecyclerAdapter { } initGameList(ids); } - }).start(); + }); } } diff --git a/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java b/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java index d484c8a18d..3dc588eaaa 100644 --- a/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java @@ -14,11 +14,16 @@ import com.gh.gamecenter.SuggestionActivity; import com.gh.gamecenter.adapter.BaseRecyclerAdapter; import com.gh.gamecenter.entity.InstallGameEntity; import com.gh.gamecenter.listener.OnCallBackListener; +import com.gh.gamecenter.retrofit.*; import java.io.File; import java.util.ArrayList; import java.util.List; +import rx.Observable; +import rx.schedulers.*; +import rx.android.schedulers.*; + /** * Created by khy on 2017/4/1. */ @@ -37,49 +42,53 @@ public class SuggestSelectGameAdapter extends BaseRecyclerAdapter(); - new Thread(new Runnable() { - @Override - public void run() { - initData(); - } - }).start(); + initData(); } private void initData() { - PackageManager pm = mContext.getPackageManager(); - List installedPackages = pm.getInstalledPackages(0); + Observable + .create(new Observable.OnSubscribe() { + @Override + public void call(rx.Subscriber subscriber) { - for (PackageInfo installedPackage : installedPackages) { - if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { - InstallGameEntity installGameEntity = new InstallGameEntity(); - installGameEntity.setGamePath(installedPackage.applicationInfo.sourceDir); - try { - Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); - installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable)); + PackageManager pm = mContext.getPackageManager(); + List installedPackages = pm.getInstalledPackages(0); - installGameEntity.setGameVersion(installedPackage.versionName); - installGameEntity.setGameName(installedPackage.applicationInfo.loadLabel(pm).toString()); - installGameEntity.setPackageName(installedPackage.packageName); + for (PackageInfo installedPackage : installedPackages) { + if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { + InstallGameEntity installGameEntity = new InstallGameEntity(); + installGameEntity.setGamePath(installedPackage.applicationInfo.sourceDir); + try { + Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); + installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable)); - File file = new File(installedPackage.applicationInfo.sourceDir); - installGameEntity.setGameSize(file.length()); + installGameEntity.setGameVersion(installedPackage.versionName); + installGameEntity.setGameName(installedPackage.applicationInfo.loadLabel(pm).toString()); + installGameEntity.setPackageName(installedPackage.packageName); - apkList.add(installGameEntity); + File file = new File(installedPackage.applicationInfo.sourceDir); + installGameEntity.setGameSize(file.length()); - } catch (Exception e) { + apkList.add(installGameEntity); - } - } - } - - pb.post(new Runnable() { - @Override - public void run() { - notifyDataSetChanged(); - pb.setVisibility(View.GONE); - } - }); + } catch (Exception e) { + } + } + } + subscriber.onCompleted(); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onCompleted() { + super.onCompleted(); + notifyDataSetChanged(); + pb.setVisibility(View.GONE); + } + }); } @Override diff --git a/app/src/main/res/drawable-xhdpi/kc_checkbox_select.png b/app/src/main/res/drawable-hdpi/kc_checkbox_select.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/kc_checkbox_select.png rename to app/src/main/res/drawable-hdpi/kc_checkbox_select.png diff --git a/app/src/main/res/drawable-xhdpi/kc_checkbox_unselect.png b/app/src/main/res/drawable-hdpi/kc_checkbox_unselect.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/kc_checkbox_unselect.png rename to app/src/main/res/drawable-hdpi/kc_checkbox_unselect.png diff --git a/app/src/main/res/layout/activity_clean_apk.xml b/app/src/main/res/layout/activity_clean_apk.xml index 5810c2364c..ea2a606e4b 100644 --- a/app/src/main/res/layout/activity_clean_apk.xml +++ b/app/src/main/res/layout/activity_clean_apk.xml @@ -42,7 +42,7 @@ android:layout_height = "wrap_content" android:layout_alignParentRight = "true" android:layout_centerVertical = "true" - android:layout_marginRight = "26dp" + android:layout_marginRight = "18dp" android:visibility = "gone" /> diff --git a/app/src/main/res/layout/game_normal_item.xml b/app/src/main/res/layout/game_normal_item.xml index abedc626d7..101b08a265 100644 --- a/app/src/main/res/layout/game_normal_item.xml +++ b/app/src/main/res/layout/game_normal_item.xml @@ -94,8 +94,8 @@ android:id = "@+id/home1_game_des" android:layout_width = "match_parent" android:layout_height = "wrap_content" - android:layout_marginBottom = "5dp" - android:layout_marginTop = "10dp" + android:layout_marginBottom = "8dp" + android:layout_marginTop = "8dp" android:ellipsize = "end" android:includeFontPadding = "false" android:lineSpacingMultiplier = "0.9" diff --git a/app/src/main/res/layout/game_normal_item_swipe.xml b/app/src/main/res/layout/game_normal_item_swipe.xml index 8e8ae2c808..1f83d6e362 100644 --- a/app/src/main/res/layout/game_normal_item_swipe.xml +++ b/app/src/main/res/layout/game_normal_item_swipe.xml @@ -136,8 +136,8 @@ android:id = "@+id/home1_game_des" android:layout_width = "match_parent" android:layout_height = "wrap_content" - android:layout_marginBottom = "5dp" - android:layout_marginTop = "10dp" + android:layout_marginBottom = "8dp" + android:layout_marginTop = "8dp" android:ellipsize = "end" android:includeFontPadding = "false" android:lineSpacingMultiplier = "0.9" diff --git a/app/src/main/res/layout/game_test_item.xml b/app/src/main/res/layout/game_test_item.xml index b05fc8204b..2e4d95b6ed 100644 --- a/app/src/main/res/layout/game_test_item.xml +++ b/app/src/main/res/layout/game_test_item.xml @@ -93,8 +93,8 @@ android:id = "@+id/home2_game_des" android:layout_width = "match_parent" android:layout_height = "wrap_content" - android:layout_marginBottom = "5dp" - android:layout_marginTop = "10dp" + android:layout_marginBottom = "8dp" + android:layout_marginTop = "8dp" android:ellipsize = "end" android:includeFontPadding = "false" android:lineSpacingMultiplier = "0.9"