首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2018年的安卓开发环境搭建

有代理的同学直接设置一下代理就完事了,如果没有代理,可以在AS安装目录中寻找bin/idea.properties文件,然后在最后添加下面一行,应该就可以直接打开了。...这里提示一下,如果你重装过系统,而且原来的安卓SDK还在的话,可能会在这里出现安装错误。...我出现的错误是找不到下载目录,仔细检查后发现,AS会尝试下载到以前的用户临时文件夹中,但是我用户名改过了,所以就出错了。我的解决办法是把原来的SDK全删了重新下载一次。...然后是选择界面样式,由于是示例项目,随便选一个就可以了,我选择了空活动。 最后是设置主活动类的名称,默认即可。 最后就是漫长的等待时间了。...所以最好只在自己电脑上开启USB调试,在公共场合不要开启。 手机准备就绪之后点击Run -> Run app,就会打开设备列表对话框,同时在手机上提示是否允许USB连接。

1.7K20

IntelliJ IDEA 2024.1 更新亮点汇总:全面提升开发体验

在工作表中,使用 Scala 2.13.12 时,在构建窗口中再次正确报告编译错误,并且在第一次代码编译之前导入不再被错误地标记为未使用。...调用堆栈中的折叠库调用 现在,库调用默认折叠在调试工具窗口的调用堆栈中,帮助您在浏览代码时保持焦点。但是,如果您需要验证库调用序列,您可以扩展该组并相应地探索框架。...该功能默认启用,您可以在*“设置/首选项|”中控制它。构建、执行、部署 |覆盖范围*。...代码覆盖率设置移至主 IDE 设置 代码覆盖率设置已从*“运行配置”弹出窗口移至“设置/首选项”|构建、执行、部署 |覆盖范围*。...Search Everywhere中的**端点选项卡 最终的 我们通过引入*“端点”选项卡 增强了“搜索无处不在”*对话框 ,该选项卡出现在与 URL 搜索结果相关的项目中。

3.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kotlin 机制你都了解吗?

    ,如果我们想在主构造函数中写一些逻辑,怎么办呢, kotlin 给我们提供一个 init 结构体,所有构造函数中的逻辑都可以写在里面: class Person(val name: String, val...lazy 在第一次被调用时就被初始化,以后调用该属性会返回之前的结果。 5. let, apply, run, with 的区别 ---- ? 6....首先伴生对象中的代码是在类加载时就会执行。init代码块中的方法会按顺序放在主构造函数中,主构造函数中原来的代码会在后面执行。 9. const 和 val 有什么区别?...但是,这些属性的值必须仅在编译时已知,这 const 就是也称为编译时常量的原因。相当于 java 中的 static final 修饰。该val关键字还用于只读属性。...如果这些函数中的任何一个在类体中显式定义或继承自其基类,则不会自动生成该函数。如果变量是 val 修饰,只会生成 get 方法。 11. 什么是 Range 操作符?

    80430

    探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率

    如果您使用后一种方式,IDE 将建议您插入语言注解。 执行注入后,您可以再次调用意图操作列表,并选择在独立编辑器窗格中打开和编辑注入的片段。...改进的基于编译器的高亮显示 在此之前,如果您在使用基于编译器的高亮显示时切换到另一个编辑器,代码会自动重新编译。 在版本 2024.1 中,我们对此进行了更改。...在工作表中,使用 Scala 2.13.12 时,编译错误会在构建窗口中再次正确报告,并且在第一次代码编译之前 import 不会再被错误地标记为未使用。...此外,您现在可以固定 X-Ray 功能,确保即使在释放 Ctrl 键后其仍保持活动状态。...调用堆栈中的折叠库调用 现在,库调用在 Debug(调试)工具窗口的调用堆栈中默认折叠,帮助您在浏览代码时保持专注。 但是,如果您需要验证库调用序列,可以展开组并相应地探索帧。

    3.8K20

    PermissionX现在支持Java了!还有Android 11权限变更讲解

    真的很遗憾看到,即使在今天,Kotlin在国内仍然还只是少部分开发者群体使用的语言,然而这就是现实。因此,如果PermissionX只支持Kotlin语言的话,势必将大部分的开发者都拒之了门外。...另外权限申请对话框现在允许取消了,如果用户取消了权限对话框,将会视为一次拒绝。...Android 11中还引入了权限过期的机制,本来用户授予了应用程序某个权限,该权限会一直有效,现在如果某应用程序很长时间没有启动,Android系统会自动收回用户授予的权限,下次启动需要重新请求授权。...在Android 10系统中,如果我们同时申请前台和后台定位权限,那么将会出现如下界面: ?...当一个任务执行结束之后会判断是否还有下一个任务要执行,如果有的话就执行下一个任务,没有的话就回调结束。示意图如下所示: ?

    1.6K30

    CS_198_基于时间和物料开票的服务-3

    3.1 IW72更改服务订单在该活动中,分配服务订单中所需的备件。对库存物料,创建预留;对非库存物料,则创建采购申请。可以计划第三方服务。在该示例中,我们将计划库存物料。...图片如果出现错误的条件类型VPRS,忽略该错误。4. 选择 工序 标签页。 5. 在 修改SP服务订单:工序总览 屏幕上,选择操作 0010 并选择 一般。图片6....如果出现检查客户信贷限额的对话框,则选择 回车。图片9. 保存您的输入。10. 选择返回 (F3) 以退回到 SAP 轻松访问 屏幕 (SAP GUI) 已添加一个组件至服务订单。...要完成业务情景时间记录 (211) 的活动,需要使用下表中的主数据执行有关业务流程文档 中的处理步骤:字段名称描述用户操作和值注释数据输入参数文件定制的时间表参数文件YBCSSP 服务订单关键日期确定该时间表中可用日期范围的日期...不同于 CATS 的是,您对工作时间进行报告时不再需要识别人员编号。在该活动中,技术人员负责报回用于此维护订单的时间。

    6910

    【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )

    final 对等的常量值 ; 定义位置 : const val 常量只能定义在 Kotlin 文件顶层, 或 object 对象表达式中, 不能定义在类中 ; /** * 权限申请码, 作为权限申请的标识...object 对象表达式中, 不能定义在类中 */ const val PERMISSION_REQUEST_CODE : Int = 100; 数组转为可变参数 : Kotlin 中可以使用 Array...; 如果第一次申请权限 , 拒绝了某些权限的申请 , 第二次就会自动弹出 申请权限原理对话框 , 在这个对话框中 , 开发者需要给出为什么申请这些权限 , 说服用户同意这些权限的申请 ; 申请权限原理对话框...: 用户申请权限 , 如果是首次申请 , 该对话框不弹出 , 如果不是首次申请 , 并且之前拒绝过某些权限申请 , 就会弹出该对话框 , 用户进行以下操作 : 用户点击 确定 : 就会继续执行权限申请的流程...public static final 对等的常量值 * const val 常量只能定义在 Kotlin 文件中, 或 object 对象表达式中, 不能定义在类中 */ const

    2.2K00

    【Jetpack】Navigation 导航组件 ⑤ ( NavigationUI 类使用 )

    , 输入 Fragment 名称 , 创建新的 Fragment ; 创建 Fragment 时 , 会自动生成对应的 布局文件 : 注意 : 该操作比较坑 , 生成 Fragment 时 , 会自动添加...Kotlin 语言插件的 Gradle 依赖 , 必要时可以删除该依赖 ; 自动生成的依赖没有配置 Maven 源 , 会报错 ; buildscript { dependencies {..." Navigation Graph " 对话框 , 选择要拖入的 NavigationGraph , 然后点击右下角 " OK " 按钮 ; 拖入后 , 为该空间添加约束 , 最终源码如下 : 在该菜单配置文件中 , 配置 android:id="@+id/fragmentB" , 其含义是跳转到 NavigationGraph 中 id 为 fragmentB 对应的 Fragment...源码和布局文件 在该界面中 , 设置了 隐藏 AppBar 中的 菜单按钮 的功能 , 跳转到 FragmentB 之后 , 右上角 就不再显示菜单按钮 ; FragmentB 代码 : package

    96040

    为什么说在Android中请求权限从来都不是一件简单的事情?

    等待的时间一时兴起,突然想写一篇原创,聊一聊我自己在写Android权限请求代码时的一些技术心得。 正如这篇文章标题所描述的一样,在Android中请求权限从来都不是一件简单的事情。为什么?...()里判断,如果用户拒绝了某项权限,那么就弹出一个对话框,告诉用户相机和定位权限是必须的,然后在setPositiveButton的点击事件中调用requestPermissions()方法重新请求权限...但是对于开发者来说,却让我们苦不堪言,如果我的某项功能就是必须依赖于这个权限才能运行,现在用户把它拒绝并不再询问了,我该怎么办?...也就是说,即使只为了那1%的用户,为了这种不太可能会出现的操作方式,我们在程序中还是得要将这种场景充分考虑进去。 那么,权限被拒绝且不再询问了,我们该如何处理呢?...我们只需要在permissions()方法中传入要请求的权限名,在onExplainRequestReason()和onForwardToSettings()回调中填写对话框上的提示信息,然后在request

    1.3K10

    【IntelliJ IDEA】导出可执行 JAR 包

    Java 项目类型 , 选择 Kotlin 支持 , Kotlin 代码较简洁 , 容易开发 , 设置项目名称 , 选择在新窗口打开 , 随便写个 main 函数 ; public class Main...JAR 包 ---- 右键点击工程根目录 , 选择 " Open Module Settings " , 在 " Project Structure " 对话框中的 " Artifacts " 选项卡...选项选择 " extract to the target JAR " , " Directory for META_INF/MANIFEST.MF " 选项设置的是当前的主函数配置文件生成位置 ;...Build / Build Artifacts " 选项 , 选择后 , 会在屏幕中心位置弹出 Build Artifact 选项 , 选择 " Build " 选项 ; JAR_Export.jar 可执行文件生成在...工程根目录/out/artifacts/JAR_Export_jar 目录下 ; 如果电脑上安装了 JRE , 该 JAR 文件可以双击执行 ;

    3.9K31

    Android 系统开发_四大组件篇 -- 探讨 Activity 的生命周期

    它和 onPause() 方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么 onPause() 方法会得到执行,而 onStop() 方法并不会执行。...image.gif 为了让 DialogActivity 使用对话框式主题,我们在 AndroidManifest.xml 中做如下设置: <?...image.gif Result (1)当 MainActivity 第一次被创建时,如下方法被执行: 2018-10-18 04:31:29.071 2526-2526/?...可能这并不会影响正常的功能,但是存在一个特殊情况:如果活动 A 中存在临时数据和状态(比如 A 中有一个文本输入框,我们输入了一些文字,然后启动了 B 活动,如果 A 被 kill了,在重新回到 A 后...,A 活动重新创建,那么数据都丢失了),此时会严重影响用户体验,该怎么办?

    46920

    生命周期感知 Lifecycle

    override fun onStart() { super.onStart() Util.checkUserStatus { result -> // 如果在活动停止后调用此回调该怎么办...public void onStart() { super.onStart(); Util.checkUserStatus(result -> { // 如果在活动停止后调用此回调该怎么办...还可以使用可识别生命周期的组件在应用程序销毁时终止缓冲。 启动和停止网络连接。 使用可感知生命周期的组件可以在应用程序处于前台状态时实时更新(流式传输)网络数据,并在应用程序进入后台时自动暂停。...不幸的是,在 onSaveInstanceState() 之后调用了 AppCompatActivity 的 onStop() 方法,这留下了一个空白,在该空白中,不允许 UI 状态更改,但生命周期尚未移至...这将创建一个可能较长的时间间隔,在该时间间隔中,即使无法修改其 UI 状态,观察者仍认为生命周期处于活动状态。

    1.2K20

    CC++ Qt MdiArea 多窗体组件应用

    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体的功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所有的窗体创建与操作都在这个容器内进行...MDI窗体控件类似于画布,该控件只具备展示窗体的功能,无法实现生成窗体,所以我们需要在项目中手动增加自定义的Dialog对话框,并对该对话框进行一定的定制。...图片这个Dialog对话框我们只增加两个功能,一个Dialog::currentFileName()获取窗体标题,另一个Dialog::SetData(QString data)设置数据到编辑框,代码实现如下...,在toolBar中增加相应的菜单栏,并在主窗体中放入mdiArea容器组件。...MainWindow::on_actionOpen_triggered()事件,关闭窗体时则执行MainWindow::on_actionClose_triggered()事件。

    1.2K40

    CC++ Qt MdiArea 多窗体组件应用

    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体的功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所有的窗体创建与操作都在这个容器内进行...MDI窗体控件类似于画布,该控件只具备展示窗体的功能,无法实现生成窗体,所以我们需要在项目中手动增加自定义的Dialog对话框,并对该对话框进行一定的定制。...这个Dialog对话框我们只增加两个功能,一个Dialog::currentFileName()获取窗体标题,另一个Dialog::SetData(QString data)设置数据到编辑框,代码实现如下...,在toolBar中增加相应的菜单栏,并在主窗体中放入mdiArea容器组件。...MainWindow::on_actionOpen_triggered()事件,关闭窗体时则执行MainWindow::on_actionClose_triggered()事件。

    1.1K20

    Kotlin基本语法和使用技巧

    在使用第一次变量之前,一定要保证为questionTextView赋值 , 不然会出现空指针异常。...= null //在主构造函数中不能有任何代码实现,如果有额外的代码需要在构造方法中执行,你需要放到init代码块中执行 init { name = "Zhang Tao..., id) { } } forEach:遍历每一个元素 filter:对每个元素进行过滤操作,如果 lambda 表达式中的条件成立则留下该元素,否则剔除,最终生成新的集合 map:遍历每个元素并执行给定表达式...官方提供的线程api 属性委托 有些常见的属性操作,我们可以通过委托方式,让它实现,例如:lazy 延迟属性: 值只在第一次访问的时候计算 类委托 可以通过类委托来减少 extend类委托的时,编译器回优使用自身重新函数...少了 wait()/notify()等函数 Unit Kotlin 中的 Unit 对应 Java 中的 void 在 Java 中通过 「类名.this」 获取目标类引用 在 Kotlin

    86650

    Better Kotlin

    截止到明天早上 9 点,点赞最多的找我有小奖励哟~ 我想给大家的一些小建议 这么有趣的活动,那我作为一名两个月的 Kotlin 开发,自然也应该来这个活动凑凑热闹。...所以在伴生对象中声明常量是很常见的做法,但如果写法不对,可能就会产生额外开销。...访问一个伴生对象的私有常量字段需要经过以下方法: 调用伴生对象的静态方法 调用伴生对象的实例方法 调用主类的静态方法 读取主类中的静态字段 为了访问一个常量,而多花费调用4个方法的开销,这样的 Kotlin...对于其他类型的常量,最好在它们自己的主类对象而不是伴生对象中来存储公共的全局常量。...,保证该值只在一个线程中计算,并且所有线程会得到相同的值。

    1.3K20

    Android Studio 4.0重磅发布:全新的 Motion 编辑器及众多更新都在这里!

    在 Android Studio 4.0 中,CPU 记录现在与 Profiler 主时间轴分开显示,并按组分类以简化分析过程。你可以上下移动组,或者在组中拖放项目以定制界面。 ?...线程活动的并排分析更轻松 为了更轻松地进行并排分析,你现在可以在 Thread Activity(线程活动)时间轴中查看所有线程活动(包括方法、函数和事件),并使用新的导航快捷方式轻松移动数据(例如使用...编写 R8 规则时的智能编辑器功能 R8 是在 Android Gradle 插件 3.4.0 中引入的,可将 desugaring、缩减、混淆、优化和 dexing 合并为一个步骤,从而显著提高构建性能...这意味着你现在可以使用标准语言 API 了,以前它们只在最新的 Android 版本中可用(例如 java.util.stream,java.util.function 和 java.time)。...在该插件的 4.0.0 版本中,你现在可以单独禁用构建功能,如下所示,这可以优化大型项目的构建性能。

    4.7K30

    android dialog用法

    该函数在每次一个对话框打开时都调用. 如果你不定义该函数,则对话框每次打开都是一样的. 该函数也会传入对话框的id以及你在onCreateDialog()中创建的Dialog对象.   ...如果你使用这些示例代码, 你可以在onCreateDialog()中返回最后的Dialog对象来获得图片中对话框的效果.   ...当对话框第一次被请求时,Android从你的Activity中调用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。...如果你想在每一次对话框被打开时改变它的任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用,而onCreateDialog(int) 仅在对话框第一次打开时被调用。...使用消除侦听器Using dismiss listeners 如果你希望你的应用程序在一个对话框消亡的时候执行一些流程,那么你应该附着一个on-dismiss侦听器到对话框上。

    1.4K30

    Android运行时权限终极方案,用PermissionX吧

    第三个参数是对话框上确定按钮的文字,点击该按钮后将会重新执行权限申请操作。...解决了向用户解释权限申请原因的问题,接下来还有一个头疼的问题要解决:如果用户不理会我们的解释,仍然执意拒绝权限申请,并且还选择了拒绝且不再询问的选项,这该怎么办?...更多用法 PermissionX最主要的功能大概就是这些,不过我在使用一些App的时候发现,有些App喜欢在第一次请求权限之前就先弹出一个对话框向用户解释自己需要哪些权限,然后才会进行权限申请。...第二,在使用explainReasonBeforeRequest()方法时,如果onExplainRequestReason()方法中编写了权限过滤的逻辑,最终的运行结果可能和你期望的会不一致。...这里在onExplainRequestReason()方法中编写了刚才用到的权限过滤逻辑,当有多个权限被拒绝时,我们只重新申请CAMERA权限。

    1.2K10
    领券