优化代码
This commit is contained in:
3
.idea/gradle.xml
generated
3
.idea/gradle.xml
generated
@@ -3,8 +3,9 @@
|
|||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
<option name="distributionType" value="LOCAL" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="gradleHome" value="E:\kejiang\Android\Android Studio\gradle\gradle-2.14.1" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
|||||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -27,5 +27,5 @@
|
|||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
|
||||||
</project>
|
</project>
|
||||||
@@ -34,4 +34,37 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
</com.ldd.pullview.AbPullToRefreshView>
|
</com.ldd.pullview.AbPullToRefreshView>
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_alignParentStart="true">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="1"
|
||||||
|
android:id="@+id/radioButton" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="2"
|
||||||
|
android:id="@+id/radioButton2" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="3"
|
||||||
|
android:id="@+id/radioButton3" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="4"
|
||||||
|
android:id="@+id/radioButton4" />
|
||||||
|
</RadioGroup>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.1.2'
|
classpath 'com.android.tools.build:gradle:2.1.3'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|||||||
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
|||||||
#Mon Dec 28 10:00:20 PST 2015
|
#Tue Aug 16 10:13:25 CST 2016
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
|
||||||
|
|||||||
@@ -27,10 +27,8 @@ dependencies {
|
|||||||
compile 'org.xutils:xutils:3.3.34'
|
compile 'org.xutils:xutils:3.3.34'
|
||||||
compile 'com.android.support:recyclerview-v7:23.3.0'
|
compile 'com.android.support:recyclerview-v7:23.3.0'
|
||||||
compile 'com.linglongxin24:UncaughtExceptionSendEmail:1.0.0'
|
compile 'com.linglongxin24:UncaughtExceptionSendEmail:1.0.0'
|
||||||
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
|
// debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
|
||||||
// or 1.4-beta1
|
// releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
|
||||||
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
|
// testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
|
||||||
// or 1.4-beta1
|
|
||||||
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
|
|
||||||
compile 'com.android.support:design:23.4.0'
|
compile 'com.android.support:design:23.4.0'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,49 +1,41 @@
|
|||||||
package com.kejiang.yuandl.app;
|
//package com.kejiang.yuandl.app;
|
||||||
|
//
|
||||||
import android.app.Application;
|
//import android.app.Application;
|
||||||
import android.app.admin.SystemUpdatePolicy;
|
//import android.content.Context;
|
||||||
import android.content.Context;
|
//
|
||||||
import android.os.Vibrator;
|
//import com.kejiang.yuandl.mylibrary.CustomActivityOnCrash;
|
||||||
|
//import com.orhanobut.logger.Logger;
|
||||||
import com.squareup.leakcanary.LeakCanary;
|
//import org.xutils.x;
|
||||||
import com.kejiang.yuandl.mylibrary.CustomActivityOnCrash;
|
//
|
||||||
import com.orhanobut.logger.Logger;
|
///**
|
||||||
import com.squareup.leakcanary.RefWatcher;
|
// * Created by yuandl on 2016/5/23 0023.
|
||||||
|
// */
|
||||||
import org.xutils.x;
|
//public class MyApplication extends Application {
|
||||||
|
// @Override
|
||||||
/**
|
// public void onCreate() {
|
||||||
* Created by yuandl on 2016/5/23 0023.
|
// super.onCreate();
|
||||||
*/
|
//// CustomActivityOnCrash.install(this);
|
||||||
public class MyApplication extends Application {
|
//// CustomActivityOnCrash.setDebugMode(true);
|
||||||
|
//// String[] emialTo = {"yuandl@Bluemobi.cn", "kangfh@Bluemobi.cn"};
|
||||||
private RefWatcher refWatcher;
|
//// CustomActivityOnCrash.setEmailTo(emialTo);
|
||||||
|
//// Logger.init("law");
|
||||||
@Override
|
//// x.Ext.init(this);
|
||||||
public void onCreate() {
|
//// refWatcher = LeakCanary.install(this);
|
||||||
super.onCreate();
|
//// refWatcher = installLeakCanary();
|
||||||
CustomActivityOnCrash.install(this);
|
// }
|
||||||
CustomActivityOnCrash.setDebugMode(true);
|
//
|
||||||
String[] emialTo = {"yuandl@Bluemobi.cn", "kangfh@Bluemobi.cn"};
|
// @Override
|
||||||
CustomActivityOnCrash.setEmailTo(emialTo);
|
// public void onLowMemory() {
|
||||||
Logger.init("law");
|
// super.onLowMemory();
|
||||||
x.Ext.init(this);
|
// System.gc();
|
||||||
// refWatcher = LeakCanary.install(this);
|
// }
|
||||||
refWatcher = installLeakCanary();
|
//
|
||||||
}
|
//// public static RefWatcher getRefWatcher(Context context) {
|
||||||
|
//// MyApplication application = (MyApplication) context.getApplicationContext();
|
||||||
@Override
|
//// return application.refWatcher;
|
||||||
public void onLowMemory() {
|
//// }
|
||||||
super.onLowMemory();
|
////
|
||||||
System.gc();
|
//// protected RefWatcher installLeakCanary() {
|
||||||
}
|
//// return RefWatcher.DISABLED;
|
||||||
|
//// }
|
||||||
public static RefWatcher getRefWatcher(Context context) {
|
//}
|
||||||
MyApplication application = (MyApplication) context.getApplicationContext();
|
|
||||||
return application.refWatcher;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected RefWatcher installLeakCanary() {
|
|
||||||
return RefWatcher.DISABLED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ import java.net.SocketTimeoutException;
|
|||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Observer;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -452,7 +453,7 @@ public abstract class BaseActivity extends AutoLayoutActivity implements View.On
|
|||||||
@Override
|
@Override
|
||||||
|
|
||||||
public void onStarted() {
|
public void onStarted() {
|
||||||
netOnStart();
|
netOnStart(requestCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -546,7 +547,12 @@ public abstract class BaseActivity extends AutoLayoutActivity implements View.On
|
|||||||
|
|
||||||
return jsonBean;
|
return jsonBean;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 开始访问网络
|
||||||
|
*/
|
||||||
|
protected void netOnStart(int requestCode) {
|
||||||
|
netOnStart();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 开始访问网络
|
* 开始访问网络
|
||||||
*/
|
*/
|
||||||
@@ -622,7 +628,7 @@ public abstract class BaseActivity extends AutoLayoutActivity implements View.On
|
|||||||
int responseCode = httpEx.getCode();
|
int responseCode = httpEx.getCode();
|
||||||
String responseMsg = httpEx.getMessage();
|
String responseMsg = httpEx.getMessage();
|
||||||
String errorResult = httpEx.getResult();
|
String errorResult = httpEx.getResult();
|
||||||
Toast.makeText(x.app(), "网络错误:" + ex.getMessage(), Toast.LENGTH_LONG).show();
|
Toast.makeText(x.app(), "网络繁忙", Toast.LENGTH_LONG).show();
|
||||||
// ...
|
// ...
|
||||||
} else if (ex instanceof SocketTimeoutException) {
|
} else if (ex instanceof SocketTimeoutException) {
|
||||||
Toast.makeText(x.app(), "连接服务器超时", Toast.LENGTH_LONG).show();
|
Toast.makeText(x.app(), "连接服务器超时", Toast.LENGTH_LONG).show();
|
||||||
@@ -706,6 +712,7 @@ public abstract class BaseActivity extends AutoLayoutActivity implements View.On
|
|||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
// fixFocusedViewLeak(x.app());
|
// fixFocusedViewLeak(x.app());
|
||||||
// fixInputMethodManager();
|
// fixInputMethodManager();
|
||||||
|
// fixInputMethodManagerLeak(this);
|
||||||
mContentLayout.removeAllViews();
|
mContentLayout.removeAllViews();
|
||||||
mContentLayout = null;
|
mContentLayout = null;
|
||||||
if (cancelable != null && !cancelable.isCancelled()) {
|
if (cancelable != null && !cancelable.isCancelled()) {
|
||||||
@@ -790,6 +797,48 @@ public abstract class BaseActivity extends AutoLayoutActivity implements View.On
|
|||||||
Reflector.invokeMethodExceptionSafe(imm, "startGettingWindowFocus", view);
|
Reflector.invokeMethodExceptionSafe(imm, "startGettingWindowFocus", view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void fixInputMethodManagerLeak(Context context) {
|
||||||
|
if (context == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
// 对 mCurRootView mServedView mNextServedView 进行置空...
|
||||||
|
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
if (imm == null) {
|
||||||
|
return;
|
||||||
|
}// author:sodino mail:sodino@qq.com
|
||||||
|
|
||||||
|
Object obj_get = null;
|
||||||
|
Field f_mCurRootView = imm.getClass().getDeclaredField("mCurRootView");
|
||||||
|
Field f_mServedView = imm.getClass().getDeclaredField("mServedView");
|
||||||
|
Field f_mNextServedView = imm.getClass().getDeclaredField("mNextServedView");
|
||||||
|
|
||||||
|
if (f_mCurRootView.isAccessible() == false) {
|
||||||
|
f_mCurRootView.setAccessible(true);
|
||||||
|
}
|
||||||
|
obj_get = f_mCurRootView.get(imm);
|
||||||
|
if (obj_get != null) { // 不为null则置为空
|
||||||
|
f_mCurRootView.set(imm, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (f_mServedView.isAccessible() == false) {
|
||||||
|
f_mServedView.setAccessible(true);
|
||||||
|
}
|
||||||
|
obj_get = f_mServedView.get(imm);
|
||||||
|
if (obj_get != null) { // 不为null则置为空
|
||||||
|
f_mServedView.set(imm, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (f_mNextServedView.isAccessible() == false) {
|
||||||
|
f_mNextServedView.setAccessible(true);
|
||||||
|
}
|
||||||
|
obj_get = f_mNextServedView.get(imm);
|
||||||
|
if (obj_get != null) { // 不为null则置为空
|
||||||
|
f_mNextServedView.set(imm, null);
|
||||||
|
}
|
||||||
|
} catch (Throwable t) {
|
||||||
|
t.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,18 +18,15 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONException;
|
import com.alibaba.fastjson.JSONException;
|
||||||
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.TypeReference;
|
||||||
import com.kejiang.yuandl.app.MyApplication;
|
|
||||||
import com.kejiang.yuandl.bean.JsonBean;
|
import com.kejiang.yuandl.bean.JsonBean;
|
||||||
import com.kejiang.yuandl.utils.CheckNetwork;
|
import com.kejiang.yuandl.utils.CheckNetwork;
|
||||||
import com.kejiang.yuandl.utils.SharedPreferencesUtils;
|
import com.kejiang.yuandl.utils.SharedPreferencesUtils;
|
||||||
import com.kejiang.yuandl.utils.Tools;
|
import com.kejiang.yuandl.utils.Tools;
|
||||||
import com.kejiang.yuandl.view.LoadingDialog;
|
import com.kejiang.yuandl.view.LoadingDialog;
|
||||||
import com.orhanobut.logger.Logger;
|
import com.orhanobut.logger.Logger;
|
||||||
import com.squareup.leakcanary.RefWatcher;
|
|
||||||
|
|
||||||
import org.xutils.common.Callback;
|
import org.xutils.common.Callback;
|
||||||
import org.xutils.common.util.KeyValue;
|
import org.xutils.common.util.KeyValue;
|
||||||
import org.xutils.common.util.MD5;
|
|
||||||
import org.xutils.ex.HttpException;
|
import org.xutils.ex.HttpException;
|
||||||
import org.xutils.http.RequestParams;
|
import org.xutils.http.RequestParams;
|
||||||
import org.xutils.x;
|
import org.xutils.x;
|
||||||
@@ -120,7 +117,7 @@ public class BaseFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
|
|
||||||
public void onStarted() {
|
public void onStarted() {
|
||||||
netOnStart();
|
netOnStart(requestCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -220,6 +217,12 @@ public class BaseFragment extends Fragment {
|
|||||||
protected void netOnStart() {
|
protected void netOnStart() {
|
||||||
loadingDialog.show("Loading...");
|
loadingDialog.show("Loading...");
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 开始访问网络
|
||||||
|
*/
|
||||||
|
protected void netOnStart(int requestCode) {
|
||||||
|
netOnStart();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 访问网络的进程
|
* 访问网络的进程
|
||||||
@@ -282,7 +285,7 @@ public class BaseFragment extends Fragment {
|
|||||||
int responseCode = httpEx.getCode();
|
int responseCode = httpEx.getCode();
|
||||||
String responseMsg = httpEx.getMessage();
|
String responseMsg = httpEx.getMessage();
|
||||||
String errorResult = httpEx.getResult();
|
String errorResult = httpEx.getResult();
|
||||||
Toast.makeText(x.app(), "网络错误:" + ex.getMessage(), Toast.LENGTH_LONG).show();
|
Toast.makeText(x.app(), "网络繁忙", Toast.LENGTH_LONG).show();
|
||||||
// ...
|
// ...
|
||||||
} else if (ex instanceof SocketTimeoutException) {
|
} else if (ex instanceof SocketTimeoutException) {
|
||||||
Toast.makeText(x.app(), "连接服务器超时", Toast.LENGTH_LONG).show();
|
Toast.makeText(x.app(), "连接服务器超时", Toast.LENGTH_LONG).show();
|
||||||
@@ -426,8 +429,8 @@ public class BaseFragment extends Fragment {
|
|||||||
if (cancelable != null && !cancelable.isCancelled()) {
|
if (cancelable != null && !cancelable.isCancelled()) {
|
||||||
cancelable.cancel();
|
cancelable.cancel();
|
||||||
}
|
}
|
||||||
RefWatcher refWatcher = MyApplication.getRefWatcher(getActivity());
|
// RefWatcher refWatcher = MyApplication.getRefWatcher(getActivity());
|
||||||
refWatcher.watch(this);
|
// refWatcher.watch(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.kejiang.yuandl.base;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by yuandl on 2016/8/8 0008.
|
||||||
|
*/
|
||||||
|
public abstract class LazyLoadFragment extends Fragment {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 控件是否初始化完成
|
||||||
|
*/
|
||||||
|
private boolean isViewCreated;
|
||||||
|
/**
|
||||||
|
* 数据是否已加载完毕
|
||||||
|
*/
|
||||||
|
private boolean isLoadDataCompleted;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
View view = inflater.inflate(getLayout(), container, false);
|
||||||
|
initViews(view);
|
||||||
|
isViewCreated = true;
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract int getLayout();
|
||||||
|
public abstract void initViews(View view);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||||
|
super.setUserVisibleHint(isVisibleToUser);
|
||||||
|
if (isVisibleToUser && isViewCreated && !isLoadDataCompleted) {
|
||||||
|
loadData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
if (getUserVisibleHint()) {
|
||||||
|
loadData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadData() {
|
||||||
|
isLoadDataCompleted = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
style="@style/immersion_status"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="#FFFFFF"
|
android:background="#FFFFFF"
|
||||||
android:id="@+id/llRoot"
|
android:id="@+id/llRoot"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
<!-- style="@style/immersion_status"-->
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
|
|
||||||
<include layout="@layout/public_titlebar" />
|
<include layout="@layout/public_titlebar" />
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="160px"
|
android:layout_height="160px"
|
||||||
android:background="#FFFFFF"
|
android:background="#FFFFFF"
|
||||||
android:fitsSystemWindows="true"
|
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
<!--
|
||||||
|
android:fitsSystemWindows="true"-->
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/button_backward"
|
android:id="@+id/button_backward"
|
||||||
|
|||||||
Reference in New Issue
Block a user