AndroidStudio实用快捷键与经验分享

作用 快捷键
无干扰模式,编辑框全屏 View > Enter Distraction Free Mode
Run Shift+F10
Version Control Alt + 9
最大化/最小化编辑器 Control + Shift + F12
转到上一个编辑位置 Control + Shift + 退格键
调出设置对话框 Control + Alt + S
大小写切换键 Control + Shift + U
在当前Project查找文本 Control + Shift + F
案例1:

问题:
把项目main文件删除了,并且已修改好的代码没有上传到版本控制系统,这种感觉真是惊险又刺激(看到删除成功的时候欲哭无泪)
恢复办法:

1.找到删除的文件的上级目录,右键 >> Local History >> Show History ,如下图:
图1.png

2.点击Show History会出现所有你曾经修改过的文件名称,文件所在的目录,修改时间等信息。任意选择一项,右侧会出现那个时间点的版本与当前版本有差异的所有文件(绿色代表该文件是后来新增的,蓝色代表文件后来被修改过,灰色代表该文件后来被删除了)
图2.png

2.1如果你想恢复任意时刻的版本状态,可以在左侧找到该时间点的版本,右键 >> Revert ,所有文件就恢复到了那个时间点所在的状态,如下图:
图3.png

2.2当然你也可以选择某个时刻,选择该时刻下的文件,进行单个文件的恢复,同样选择文件,右键 >> Revert Selection 。Show Difference 查看文件与当前版本的不同之处
图4.png
案例二

问题:AndroidStudio里面的提示功能,以及所有快捷键都失效了;
解决办法:

将下图的省电模式选中后,再取消选中,就可以恢复了。
省电模式.png
案例三

问题一

Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.4.1/gradle-3.4.1.pom'. Received status code 400 from server: Bad Request
Enable Gradle 'offline mode' and sync project

解决办法:


setting.png

选中Enable embedded Maven repository 再Try Again,重新编译就ok了.

案例四

问题:

Unable to resolve dependency for :app@dexOptions/compileClasspath' ......

解决办法:
查看gradle.properties文件里面是否设置了代理,如果设置了就把代理设置删除,或者注释掉,再Try again,重新编译就ok。我的一开始有如下设置:

systemProp.https.proxyPort=80
systemProp.http.proxyHost=mirrors.neusoft.edu.cn
systemProp.https.proxyHost=mirrors.neusoft.edu.cn
systemProp.http.proxyPort=80

如果还有问题,下载不到相应的类库,就添加镜像源

在project build.gradle更改为

allprojects {
    repositories {
        maven {
            url "https://maven.aliyun.com/repository/google"
        }
        maven {
            url "https://maven.aliyun.com/repository/jcenter"
        }
    }
}

————————————————
版权声明:本文为CSDN博主「Core Studio」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdn9228/article/details/90724284

案例五(项目实战):H5返回按钮不可用

电商平台:从H5页面下单后调用微信支付或者支付宝支付,支付后返回,重新启动另一个H5页面(订单列表界面),H5返回按钮不可用,不能回退到原来的下单界面。

原因:在支付结果界面返回后,重复新建了显示H5的Activity。
解决办法:
1、将显示H5的Activity的启动模式设置成singleTask,如果实例在栈内存在,再次启动的时候,就不会重新创建实例了,此时Activity就会回到栈顶,并且上面的实例会被移出栈。
2、重写Activity的onNewIntent方法,接收要显示的url。
注释以上设置就编译成功了。

案例六:使用腾讯X5内核引起的内存泄露

项目场景:
主程序中有四个下标,其中一个tab是展示的H5页面,为了在不同机型适配,使用的腾讯X5内核。H5页面与Android代码交互,Js调用Java方法,Android端给Js传入userId与经纬度。
@JavascriptInterface方法不是主线程进行的,所以此处业务需求,需要使用handler来将实现放到主线程执行。
用的LeakCanary做的检测,展现形式如下:


内存泄露展示图.png

通过图片的信息,看不出具体是哪里造成的内存泄露,我最后是通过打断电的方式,在onDestroy的时候,看哪个对象还不为null,再在onDestroy中添加相应的处理代码解决。
在Fragment的onDestroy()添加如下代码就解决了:

        if(handler != null){
            handler.removeMessages(1);
            handler = null;
        }
        try{
            if (webView != null) {
                webView.stopLoading();
                webView.removeAllViewsInLayout();
                webView.removeAllViews();
                webView.setWebViewClient(null);
                CookieSyncManager.getInstance().stopSync();
                webView.destroy();
                webView = null;
            }
        }catch (Throwable throwable){
            throwable.printStackTrace();
        } finally {
            javaScriptinterface = null;
            ToastUtil.makeNull();
            super.onDestroy();
        }
案例六:覆盖安装时解析包出错

这是接手公司代码的时候遇到的问题之一

private void jumpInstall() {
        File apkFile = new File(filePath);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        Uri apkUri = null;
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        //判断版本是否是 7.0 及 7.0 以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            apkUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileProvider", apkFile);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        } else {
            apkUri = Uri.fromFile(apkFile);
        }
        
        intent.setDataAndType(apkUri,
                "application/vnd.android.package-archive");
        startActivity(intent);
    }

仔细检查,发现是他原来的intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);写在了判断sdk版本之后。看源码:

public @NonNull Intent addFlags(@Flags int flags) {
        mFlags |= flags;
        return this;
}

public @NonNull Intent setFlags(@Flags int flags) {
        mFlags = flags;
        return this;
}

addFlags方法中mFlags |= flags;相当于mFlags = mFlags | flags;是将参数添加到mFlags后面;
setFlags方法是直接覆盖mFlags,那么之前设置的flags参数都无效,授权的设置被覆盖掉,所以出现解析包出错;

案例六:Error: Invoke-customs are only supported starting with Android O (--min-api 26)
报错截图.png

解决办法:
在defaultConfig里面加入下面这段代码:

compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
}

未完待续~~~ 经验分享

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,300评论 8 265
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • A1:先生最近有好几次在他的球友叫他打球或者喝酒时,忘掉我们的约会。我非常不开心,对他大吼大叫:你怎么这样?是不是...
    candy点点妈阅读 196评论 2 0
  • 以前总觉得谈论爱情是一件很愚蠢的事情。胸无大志,心中只有情爱。可是历史上层出不穷的文学家都在讨论情爱,为什么?因...
    不准关注阅读 232评论 2 0
  • 出差后上班第一天 漏敲卡
    古一爻阅读 207评论 0 0