Files
assistant-android/app/src/main/java/com/gh/gamecenter/PluginActivity.java

174 lines
6.2 KiB
Java

package com.gh.gamecenter;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.AppController;
import com.gh.base.BaseActivity;
import com.gh.common.util.DownloadItemUtils;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntity;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.adapter.PluginAdapter;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.eventbus.EBDownloadStatus;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPackage;
import java.util.ArrayList;
import java.util.List;
/**
* Created by LGT on 2016/7/6.
*/
public class PluginActivity extends BaseActivity {
public static final String TAG = PluginActivity.class.getSimpleName();
private RecyclerView plugin_list;
private PluginAdapter adapter;
private ProgressBarCircularIndeterminate plugin_pb_loading;
private LinearLayout reuse_no_connection;
private String entrance;
private boolean isEverpause = false;
private DataWatcher dataWatcher = new DataWatcher() {
@Override
public void onDataChanged(DownloadEntity downloadEntity) {
//特殊 插件化update
if (downloadEntity.isPluggable()) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(downloadEntity.getPackageName());
if (locationList != null) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getPluginList().get(location);
if (gameEntity != null) {
DownloadItemUtils.processDate(PluginActivity.this, gameEntity,
downloadEntity, adapter, location);
}
}
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
entrance = getIntent().getStringExtra("entrance");
View contentView = View.inflate(this, R.layout.activity_plugin, null);
init(contentView, "可以插件化的游戏");
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plugin_pb_loading.setVisibility(View.VISIBLE);
plugin_list.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
adapter = new PluginAdapter(PluginActivity.this, entrance);
plugin_list.setAdapter(adapter);
}
});
plugin_list.setHasFixedSize(true);
plugin_list.setLayoutManager(new LinearLayoutManager(this));
adapter = new PluginAdapter(this, entrance);
plugin_list.setAdapter(adapter);
}
@Override
public void loadDone() {
if (plugin_pb_loading != null && plugin_pb_loading.getVisibility() == View.VISIBLE) {
plugin_pb_loading.setVisibility(View.GONE);
}
}
// 下载被删除事件
public void onEventMainThread(EBDownloadStatus status) {
if ("delete".equals(status.getStatus())) {
DownloadManager.getInstance(this).removePlatform(status.getName(), status.getPlatform());
ArrayList<Integer> locationList = adapter.getLocationMap().get(status.getPackageName());
if (locationList != null) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getPluginList().get(location);
if (gameEntity != null && gameEntity.getEntryMap() != null) {
gameEntity.getEntryMap().remove(status.getPlatform());
}
adapter.notifyItemChanged(location);
}
}
}
}
//连接上网络事件
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (reuse_no_connection.getVisibility() == View.VISIBLE) {
plugin_list.setVisibility(View.VISIBLE);
plugin_pb_loading.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
adapter = new PluginAdapter(this, entrance);
plugin_list.setAdapter(adapter);
}
}
}
//安装、卸载事件
public void onEventMainThread(EBPackage busFour) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(busFour.getPackageName());
if (locationList != null) {
for (int location : locationList) {
if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) {
List<GameEntity> list = adapter.getPluginList();
for (int i = 0, size = list.size(); i < size; i++) {
if (list.get(i).getApk().get(0).getPackageName().equals(busFour.getPackageName())) {
list.remove(i);
adapter.notifyItemRemoved(location);
break;
}
}
}
}
adapter.initLocationMap();
}
}
@Override
protected void onPause() {
super.onPause();
isEverpause = true;
DownloadManager.getInstance(this).removeObserver(dataWatcher);
}
@Override
protected void onResume() {
super.onResume();
if (isEverpause) {
for (GameEntity entity : adapter.getPluginList()) {
entity.setEntryMap(DownloadManager.getInstance(this).getEntryMap(entity.getName()));
}
adapter.notifyDataSetChanged();
}
isEverpause = false;
DownloadManager.getInstance(this).addObserver(dataWatcher);
}
@Override
protected void onDestroy() {
super.onDestroy();
AppController.canclePendingRequests(TAG);
}
}