1. 新增BaseDialog,解决关闭dialog时,activity已经关闭导致崩溃问题
2. 修复技防措施界面MenuNewGitActivity在本地查询技防措施时出现null字段导致崩溃问题
3.修复NewSubTaskViewModel根据场景类型刷新展示列表时,由于网络访问耗时操作,导致之前选择的场景类型下标索引越界导致崩溃问题
4.修复MainActivity中fragment切换时可能崩溃问题
已修改8个文件
已添加1个文件
104 ■■■■ 文件已修改
.idea/codeStyles/Project.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/CommonApplication.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/adapter/PhotoListAdapter.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/module/MainActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/module/base/BaseDialog.kt 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/module/inspection/MenuNewGitActivity.kt 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/module/inspection/ShareProblemActivity.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/module/task/NewSubTaskViewModel.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdapp/util/DialogUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/codeStyles/Project.xml
@@ -1,5 +1,23 @@
<component name="ProjectCodeStyleConfiguration">
  <code_scheme name="Project" version="173">
    <JetCodeStyleSettings>
      <option name="PACKAGES_TO_USE_STAR_IMPORTS">
        <value>
          <package name="java.util" alias="false" withSubpackages="false" />
          <package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
          <package name="io.ktor" alias="false" withSubpackages="true" />
        </value>
      </option>
      <option name="PACKAGES_IMPORT_LAYOUT">
        <value>
          <package name="" alias="false" withSubpackages="true" />
          <package name="java" alias="false" withSubpackages="true" />
          <package name="javax" alias="false" withSubpackages="true" />
          <package name="kotlin" alias="false" withSubpackages="true" />
          <package name="" alias="true" withSubpackages="true" />
        </value>
      </option>
    </JetCodeStyleSettings>
    <codeStyleSettings language="XML">
      <indentOptions>
        <option name="CONTINUATION_INDENT_SIZE" value="4" />
app/src/main/java/cn/flightfeather/thirdapp/CommonApplication.java
@@ -27,10 +27,10 @@
public class CommonApplication extends Application {
//    private  final String ROOTURL="http://106.14.187.51:8801/supervision/";
    private  final String ROOTURL="http://192.168.0.200:8080/";
    private  final String ROOTURL_IMAGE="http://192.168.0.200:8080/images/";
    private final String ROOTURL_REALEASE = "http://47.100.191.150:9005/";
    public final String ROOTURL_REALEASE_IMAGE = "http://47.100.191.150:9005/images/";
    public final String ROOT_URL ="http://192.168.0.200:8080/";
    public final String ROOT_URL_IMAGE ="http://192.168.0.200:8080/images/";
    public final String ROOT_URL_RELEASE = "http://47.100.191.150:9005/";
    public final String ROOT_URL_RELEASE_IMAGE = "http://47.100.191.150:9005/images/";
    private Retrofit retrofit;
    private Retrofit retrofitImage;
    private DaoSession daoSession;
@@ -74,13 +74,13 @@
            if (released){
                retrofit = new Retrofit.Builder()
                        .baseUrl(ROOTURL_REALEASE)
                        .baseUrl(ROOT_URL_RELEASE)
                        .addConverterFactory(GsonConverterFactory.create(gson))
                        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                        .build();
            }else {
                retrofit = new Retrofit.Builder()
                        .baseUrl(ROOTURL)
                        .baseUrl(ROOT_URL)
                        .addConverterFactory(GsonConverterFactory.create(gson))
                        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                        .build();
@@ -102,12 +102,12 @@
                    .create();
            if (released){
                retrofitImage = new Retrofit.Builder()
                        .baseUrl(ROOTURL_REALEASE_IMAGE)
                        .baseUrl(ROOT_URL_RELEASE_IMAGE)
                        .addConverterFactory(GsonConverterFactory.create(gson))
                        .build();
            }else {
                retrofitImage = new Retrofit.Builder()
                        .baseUrl(ROOTURL_IMAGE)
                        .baseUrl(ROOT_URL_IMAGE)
                        .addConverterFactory(GsonConverterFactory.create(gson))
                        .build();
            }
app/src/main/java/cn/flightfeather/thirdapp/adapter/PhotoListAdapter.java
@@ -41,6 +41,9 @@
    @Override
    public void onBindViewHolder(PhotoListHolder holder, int position) {
        Mediafile mediafile = mediafileList.get(position);
//        String url = CommonApplication.getInstance().ROOT_URL_RELEASE_IMAGE + mediafile.getExtension1() + mediafile.getGuid() + ".jpg";
//        Glide.with(context).asDrawable().load(url).override(100,100).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.ALL).into(holder.iv_photo);
        File file = new File(Environment.getExternalStorageDirectory(),mediafile.getPath()+mediafile.getDescription());
        if (file.exists()){
            SetImageTask task = new SetImageTask(file,holder.iv_photo);
app/src/main/java/cn/flightfeather/thirdapp/module/MainActivity.java
@@ -185,7 +185,7 @@
                fragmentTransaction.show(fragmentList.get(position));
            }
            fragmentCurrent = fragmentList.get(position);
            fragmentTransaction.commit();
            fragmentTransaction.commitAllowingStateLoss();
        }
    }
app/src/main/java/cn/flightfeather/thirdapp/module/base/BaseDialog.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package cn.flightfeather.thirdapp.module.base
import android.app.Activity
import android.app.Dialog
import android.arch.lifecycle.Lifecycle
import android.arch.lifecycle.LifecycleObserver
import android.arch.lifecycle.OnLifecycleEvent
import android.content.Context
import android.os.Bundle
import android.support.v4.app.FragmentActivity
/**
 * @author riku
 * Date: 2020/8/21
 * æ·»åŠ å¯¹è¯æ¡†æ˜¾ç¤ºéšè—æ—¶å¯¹activity生命周期的判断
 */
class BaseDialog(private val mContext: Context) : Dialog(mContext), LifecycleObserver {
    init {
        if (mContext is FragmentActivity) {
            (mContext as FragmentActivity).lifecycle.addObserver(this)
        }
    }
    override fun dismiss() {
        if (mContext is Activity && !(mContext as Activity).isFinishing) {
            super.dismiss()
        }
    }
    override fun show() {
        if (mContext is Activity && !(mContext as Activity).isFinishing) {
            super.show()
        }
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy() {
        if (isShowing) {
            dismiss()
        }
    }
}
app/src/main/java/cn/flightfeather/thirdapp/module/inspection/MenuNewGitActivity.kt
@@ -156,9 +156,9 @@
        //加载预置数据
        val gittypeList =  DbFactory.getInstance().gittypeDao.queryBuilder()
                .where(
                        GittypeDao.Properties.Tasktype.eq(subTask?.type) ,
                        GittypeDao.Properties.Scensetype.eq(scene?.type),
                        GittypeDao.Properties.Districtname.eq(subTask?.districtname)
                        GittypeDao.Properties.Tasktype.eq(subTask?.type ?: ""),
                        GittypeDao.Properties.Scensetype.eq(scene?.type ?: ""),
                        GittypeDao.Properties.Districtname.eq(subTask?.districtname ?: "")
                ).orderAsc(GittypeDao.Properties.Typeid).list()
        if (gittypeList.size == 0) {
            val gittype1 = Gittype()
app/src/main/java/cn/flightfeather/thirdapp/module/inspection/ShareProblemActivity.kt
@@ -34,7 +34,7 @@
        problemVoList?.forEach {vo ->
            val mediaFileList = mutableListOf<Pair<Boolean, String>>()
            vo.mediafileList.forEach {
                mediaFileList.add(Pair(it.ischanged, CommonApplication.getInstance().ROOTURL_REALEASE_IMAGE + it.extension1 + it.guid + ".jpg"))
                mediaFileList.add(Pair(it.ischanged, CommonApplication.getInstance().ROOT_URL_RELEASE_IMAGE + it.extension1 + it.guid + ".jpg"))
            }
            infoList.add(ShareProblemPreViewActivity.Problem(
app/src/main/java/cn/flightfeather/thirdapp/module/task/NewSubTaskViewModel.kt
@@ -169,6 +169,10 @@
     * æ ¹æ®æ‰€é€‰åœºæ™¯ç±»åž‹åŠæ˜¯å¦ç›‘管刷新场景
     */
    fun refreshScene() {
        //sceneTypeList会根据联网获取的场景变更内容,此处判断保证下标不会越界
        if (selectedTypeIndex >= sceneTypeList.size) {
            selectedTypeIndex = 0
        }
        //筛选场景类型
        val tmp = ArrayList<Scense>()
        if (selectedTypeIndex == 0) {
app/src/main/java/cn/flightfeather/thirdapp/util/DialogUtil.java
@@ -13,6 +13,7 @@
import com.cazaea.sweetalert.SweetAlertDialog;
import cn.flightfeather.thirdapp.R;
import cn.flightfeather.thirdapp.module.base.BaseDialog;
/**
 * Created by feiyu on 2018/8/3.
@@ -21,7 +22,7 @@
public class DialogUtil {
    public static Dialog createLoadingDialog(Context context, String msg) {
    public static BaseDialog createLoadingDialog(Context context, String msg) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.layout_loading, null);// å¾—到加载view
        LinearLayout layout = (LinearLayout) v
@@ -29,7 +30,7 @@
//        TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// æç¤ºæ–‡å­—
//        tipTextView.setTitle(msg);// è®¾ç½®åŠ è½½ä¿¡æ¯
        Dialog loadingDialog = new Dialog(context);// åˆ›å»ºè‡ªå®šä¹‰æ ·å¼dialog
        BaseDialog loadingDialog = new BaseDialog(context);// åˆ›å»ºè‡ªå®šä¹‰æ ·å¼dialog
        loadingDialog.setCancelable(false); // æ˜¯å¦å¯ä»¥æŒ‰â€œè¿”回键”消失
        loadingDialog.setCanceledOnTouchOutside(false); // ç‚¹å‡»åŠ è½½æ¡†ä»¥å¤–çš„åŒºåŸŸ
        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
@@ -50,8 +51,8 @@
        return loadingDialog;
    }
    public static Dialog create(Context context, @LayoutRes int id) {
        Dialog dialog = new Dialog(context);
    public static BaseDialog create(Context context, @LayoutRes int id) {
        BaseDialog dialog = new BaseDialog(context);
        dialog.setContentView(id);
        //设置dialog宽度
        Window dialogWindow = dialog.getWindow();