
Android
nor1take
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
gradle 相关
library可以通过多种格式上传到远程仓库,比如大部分情况下用到的.jar或.aar。当没有指定@后缀的话,依赖的时候将会下载它的默认格式(由上传方定义,如果没有定义则默认为.jar)的Library库。那么所有的依赖树均可以下载下来。原创 2024-03-08 15:12:35 · 552 阅读 · 0 评论 -
RecyclerView 与 ListView 区别和使用
RecyclerView 需要设置布局(LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager)里,载入子项布局、获取子项数据、绑定子项布局和子项数据。ListView 的 Adapter 只有在。原创 2024-01-04 15:02:53 · 456 阅读 · 0 评论 -
Functional SAM interfaces
而不是创建手动实现接口的类,让代码更简洁易懂。当接口只有一个抽象方法时,该接口被称为。原创 2023-12-28 10:35:00 · 434 阅读 · 0 评论 -
【Android】DeepLink
允许应用程序自己去处理那些域名或URL(使得当用户点击那些链接时,系统会直接启动关联的应用程序,而不是打开网页浏览器)。但是这个过程存在问题,当用户点击一个URL,可能会弹出一个对话框让用户去选择一个应用去处理这个URL。Android应用链接是基于您的网站URL的深度链接,该链接已被验证属于您的网站。当用户点击那个URL时,它会打开你的应用。深链接可以帮助用户从网页跳转到应用,使用URLs让用户直接跳转到应用的特定界面。打开该应用有被用户指定的应用(用户更倾向的应用)。打开只能处理这个URI的应用。原创 2023-12-14 11:34:41 · 399 阅读 · 0 评论 -
【Android】动态添加 Fragment
方法实现,需要传入容器的id和待添加的。(4) 向容器内添加或替换。原创 2023-12-14 10:41:48 · 298 阅读 · 0 评论 -
【Android】Activity 的恢复
Activity 被回收,在 onSaveInstanceState 存入数据,在 onCreate 恢复数据。原创 2023-12-14 10:35:04 · 238 阅读 · 1 评论 -
【Android】toolbar & DrawerLayout
从视图的哪一边出现:左或右(或者在支持布局方向的平台版本上开始/结束)。请注意,窗口的每个垂直边缘只能有一个抽屉视图。如果您的布局为每个窗口的垂直边缘配置了多个抽屉视图,则将在运行时抛出异常。的定位和布局是使用子视图上的’ android:layout_gravity '属性来控制的,对应于你想让。,允许从窗口的一个或两个垂直边缘拉出交互式“DrawerLayout作为窗口内容的。要使用drawlayout,原创 2023-12-14 10:13:00 · 89 阅读 · 0 评论 -
【Android】通知(未完待续)
Android 8.0 系统引入了这个概念。每条通知都要属于一个对应的渠道。我们的应用程序如果想要发出通知,也必须创建自己的通知渠道才行。原创 2023-12-13 15:40:00 · 169 阅读 · 0 评论 -
【Kotlin】静态方法
Kotlin 却极度弱化了静态方法这个概念,非常推荐使用的方式来实现。虽然这里的doAction()方法并不是静态方法,但是我们仍然可以使用的方式来调用,这就是单例类所带来的便利性。不过,使用单例类的写法会将整个类中的所有方法全部变成类似于静态方法的调用方式。如果我们只是希望让类中的某一个方法变成静态方法的调用方式该怎么办呢?这个时候就可以使用刚刚在最佳实践环节用到的了。不过,方法其实也并不是静态方法,这个关键字实际上会在Util类的内部创建一个伴生类,而方法就是定义在这个伴生类里面的实例方法。只是。原创 2023-12-11 10:31:04 · 501 阅读 · 0 评论 -
【Kotlin】标准函数:let、with、run、apply
let既不是操作符,也不是什么关键字,而是一个函数。这个函数提供了函数式API的编程接口,并。这里调用了obj对象的let函数,然后Lambda 表达式中的代码就会立即执行,并且 这个obj对象本身还会作为参数传递到Lambda 表达式中。不过,为了防止变量重名,这里我将 参数名改成了obj2,但实际上它们是同一个对象。原创 2023-12-11 10:16:39 · 378 阅读 · 0 评论 -
【Kotlin】
就是一个普通的函数而已,只不过它接收的是一个Lambda 类型的参数,并且会在遍历集合时将每次遍历的值作为参数传递给Lambda 表达式。工作原理是根据我们传入的条件来遍历集合,从而找到该条件下的最大值,比如说想要找到单词最长的水果, 那么条件自然就应该是单词的长度了。函数体中可以编写任意行代码(虽然不建议编写太长的代码),并且最后一行代码会自动作为Lambda 表达式的返回值。如果有参数传入到 Lambda 表达式中的话,我们还需要声明参数列表,参数列表的结尾使用一个。首先,最外层是一对大括号。原创 2023-12-08 19:32:18 · 365 阅读 · 0 评论 -
【BroadcastReceiver】
当系统时间发生变化时,系统发出的正是一条值为android.intent.action.TIME_TICK的广播。也就是说,我们的BroadcastReceiver想要监听什么广播,就添加相应的action.最后要记得,动态注册的BroadcastReceiver一定要取消注册才行!原创 2023-12-06 17:54:13 · 96 阅读 · 0 评论 -
ListView基本用法与性能提升
这些都在 Adapter 中处理。原创 2023-12-05 15:09:52 · 891 阅读 · 0 评论 -
【Android】最好用的网络库:Retrofit
最后,我们也完全不用关心网络通信的细节,只需要在接口文件中声明一系列方法和返回值, 然后通过注解的方式指定该方法对应哪个服务器接口,以及需要提供哪些参数。事实上,Retrofit 就是Square 公司在OkHttp 的基础上进一步开发出来的应用层网络通信库,使得我们可以用更加面向对象的思维进行网络操作。Retrofit和OkHttp的定位完全不同:OkHttp 侧重的是底层通信的实现,而Retrofit 侧重的是上层接口的封装。另外,Retrofit 允许我们对服务器接口进行归类。原创 2023-12-01 16:15:08 · 722 阅读 · 0 评论 -
【Android】HttpURLConnection、OkHttp
WebView 已经在后台帮我们处理好了发送HTTP请求、接收服务器响应、解析返回数据,以及最终的页面展示这几步工作。只不过它封装得实在是太好了,反而使得我们不能那么直观地看出HTTP到底是如何工作的。因此,接下来我们通过的方式,更加深入地理解这个过程。在过去,Android上发送HTTP请求一般有两种方式:HttpURLConnection 和HttpClient。不过由于HttpClient 存在API数量过多、扩展困难等缺点,Android团队越来越不建议我们使用这种方式。原创 2023-12-01 14:48:11 · 453 阅读 · 0 评论 -
【Android】WebView 基本使用
【代码】【Android】WebView 基本使用。原创 2023-12-01 14:15:07 · 289 阅读 · 0 评论 -
【Android】IntentService
另外,根据 IntentService 的特性,这个Service 在运行结束后应该是会自动停止的,所以我们又重写了 onDestroy()方法,在这里也打印了一行日志,以证实Service 是不是停止了。这里的thread是一个Kotlin内置的顶层函数,我们只需要在Lambda 表达式中编写具体的逻辑就可以了,连start()方法都不用调用,thread函数在内部帮我们全部都处理好了。所以,我们应该在Service 的每个具体的方法里开启一个子线程,然后在这里处理那些耗时的逻辑。原创 2023-12-01 14:04:47 · 325 阅读 · 0 评论 -
【Android】前台Service
从Andr oid 8.0 系统开始,只有当应用保持在前台可见状态的情况下,Service 才能保证稳定运行,一旦应用进入后台之后,Service 随时都有可能被系统回收。前台Service启动后 即使退出应用程序,MyService 也会一直处于运行状态,而且不用担心会被系统回收。前台Service 和普通Service 最大的区别就在于:它一直会有一个正在运行的图标在系统的状态栏显示,下拉状态栏后可以看到更加详细的信息,非常类似于通知的效果。原创 2023-12-01 11:47:12 · 314 阅读 · 0 评论 -
【Abdroid】Service
其实onCreate()方法是在Service 第一次创建的时候调用的,而方法则在每次启动Service 的时候都会调用。原创 2023-12-01 11:28:21 · 60 阅读 · 0 评论 -
【Android 线程】在子线程中更新UI
方法中的代码也会在主线程中运 行,于是我们在这里就可以安心地进行UI操作了。简单来说,使用 AsyncTask 的诀窍就是,方法,就可以轻松地从子线程切换到UI线程了。中取出待处理消息,最后分发回。方法中执行一些任务的收尾工作。之后,这条消息会被添加到。的构造函数中我们传入了。方法中执行具体的耗时任务,的队列中等待被处理。方法中进行UI操作,原创 2023-12-01 11:03:27 · 734 阅读 · 0 评论