美文网首页问题研究
android 记录一些细小问题

android 记录一些细小问题

作者: 一个冬季 | 来源:发表于2019-12-25 16:11 被阅读0次

1、dialog 异常信息,is your activity running?

2、ViewGroup动态添加childView,ViewGroup.getWidth() = 0

3、A APP 打开 B APP,如果APP已经打开,直接切换到B APP

描述问题/解决问题

1、dialog 异常信息,is your activity running?

问题描述
第一次进入APP调用showLoading(),没有出现异常信息,当我退出APP,再次进入APP并调用showLoading(),就会出现is your activity running的异常信息,明明我的activity存在 && dialog!=null

   public void showLoading() {
        if (mLoadingSmallDialog==null){
            mLoadingSmallDialog = new LoadingSmallDialog(mActivity);
        }
        if (mLoadingSmallDialog.isShowing()){
            mLoadingSmallDialog.dismiss();
        }
        if (mActivity!=null && !mActivity.isFinishing())
           mLoadingSmallDialog.show();
    }

解决问题

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        if (mLoadingSmallDialog!=null){
            if (mLoadingSmallDialog.isShowing()){
                mLoadingSmallDialog.dismiss();
            }
            mLoadingSmallDialog = null;
        }
    }

因为我们在退出APP的时候,可能系统并不会马上的去回收LoadingSmallDialog,所以我们的mActivity一直是上一个我们退出APP时候的mActivity,我们需要在销毁的时候,将dialog置位null。

2、ViewGroup动态添加childView,ViewGroup.getWidth() = 0

问题描述
进入APP,请求服务器,拿到数据List循环遍历chidView,动态添加到LinearLayout,在动态添加到LinearLayout之前,需要获取LinearLayout的宽度,结果发现是0

解决问题

llActivityFloor.post(new Runnable() {
      int parentWidth = llActivityFloor.getWidth();
    //输入你的代码
})
3、A APP 打开 B APP,如果APP已经打开,直接切换到B APP
/**
     * @param pkgName 需要知道已安装的pakName
     *                return true表示已经安装了
     * @date :2020/1/6 0006
     * @author : gaoxiaoxiong
     * @description: 判断某个APP是否安装
     **/
    public static boolean checkAppInstalled(Context context, String pkgName) {
        boolean b = false;
        if (pkgName == null || pkgName.isEmpty()) {
            return b;
        }
        final PackageManager packageManager = context.getPackageManager();
        // 获取所有已安装程序的包信息
        List<PackageInfo> info = packageManager.getInstalledPackages(0);
        if (info == null || info.isEmpty())
            return b;
        for (int i = 0; i < info.size(); i++) {
            if (pkgName.equals(info.get(i).packageName)) {
                b = true;
                break;
            }
        }
        return b;
    }

    /**
     * @param pkgName 包名
     * @param htmlUrl 如果APP没有安装,就要跳转到一个HTML页面,并传递这个页面过去
     * @date :2020/1/6 0006
     * @author : gaoxiaoxiong
     * @description:打开其他APP
     **/
    public static void openOtherAPP(Context context, String pkgName, Bundle bundle, String htmlUrl) {
        if (checkAppInstalled(context, pkgName)) {
            // 获取包管理器
            PackageManager manager = context.getPackageManager();
            // 指定入口,启动类型,包名
            Intent intent = new Intent(Intent.ACTION_MAIN);//入口Main
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);// 启动LAUNCHER,跟MainActivity里面的配置类似
            intent.setPackage(pkgName);//包名
            if (bundle != null) {
                intent.putExtras(bundle);
            }
            //查询要启动的Activity
            List<ResolveInfo> apps = manager.queryIntentActivities(intent, 0);
            if (apps.size() > 0) {//如果包名存在
                ResolveInfo ri = apps.get(0);
                //获取包名
                String packageName = ri.activityInfo.packageName;
                //获取app启动类型
                String className = ri.activityInfo.name;
                //组装包名和类名
                ComponentName cn = new ComponentName(packageName, className);
                //设置给Intent
                intent.setComponent(cn);
                //根据包名类型打开Activity
                context.startActivity(intent);
            }
        } else {//APP没有安装
            if (!StringUtils.getInstance().isEmpty(htmlUrl)) {
                Intent intent = new Intent(context, SPCommonWebActivity.class);
                intent.putExtra(KEY_WEB_URL, returnHaveHttpoHttps(htmlUrl));
                context.startActivity(intent);
            }
        }
    }

相关文章

网友评论

    本文标题:android 记录一些细小问题

    本文链接:https://www.haomeiwen.com/subject/kfbcoctx.html