姜君竹
码龄5年
关注
提问 私信
  • 博客:119,107
    社区:1,659
    问答:184
    动态:11,075
    132,025
    总访问量
  • 177
    原创
  • 22,928
    排名
  • 958
    粉丝
  • 学习成就

个人简介:不立危墙之下,不站高堂之上,藏器于身,不器于行,放浪形骸外,自持礼法中。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2020-05-08
博客简介:

君子慎独,不欺暗室。卑以自牧,含章可贞。

博客描述:
流水不争先,争的是滔滔不绝!
查看详细资料
  • 原力等级
    成就
    当前等级
    5
    当前总分
    1,946
    当月
    3
个人成就
  • 获得1,426次点赞
  • 内容获得664次评论
  • 获得1,109次收藏
  • 代码片获得423次分享
创作历程
  • 41篇
    2024年
  • 77篇
    2023年
  • 59篇
    2022年
成就勋章
TA的专栏
  • 安卓
    29篇
  • JAVA
    2篇
  • 前端
  • HTML
    1篇
  • C#
    7篇
  • 我的回收站
    138篇
TA的推广
兴趣领域 设置
  • Python
    python
  • 编程语言
    pythonc++c语言javascriptqttypescriptgolang
  • 开发工具
    githubgitvisual studiopycharmvscodevisualstudio
  • 数据结构与算法
    算法数据结构
  • 前端
    jsonjavascriptajaxtypescriptvue.js前端
  • 后端
    sqlmysql
  • 操作系统
    linux
  • 软件工程
    githubgit
  • 服务器
    linux
  • 开源
    githubgitgitee
TA的社区
  • 萌新社区
    50 成员 131 内容
    管理者
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 关注/订阅/互动
  • 帖子
搜TA的内容
搜索 取消

Android Studio运行项目导致电脑重启

发布问题 2024.08.19 ·
2 回答

【安卓】解析XML格式数据

这里需要搭建一个Web服务器,在这个服务器上提供一段XML文本,然后在程序里去访问这个服务器,再对得到的XML文本进行解析。首先需要下载一个Apache服务器的安装包,官方下载地址是:http://httpd.apache.org。然后一直点击“Next”,会提示让你输入自己的域名,我们随便填一个域名就可以了。之后继续点击“Next”就可以完成安装了,安装成功后服务器会自动启动。
原创
发布博客 2024.08.16 ·
803 阅读 ·
4 点赞 ·
0 评论 ·
5 收藏

【安卓】WebView的用法与HTTP访问网络

OkHttp是一个开源项目,它不仅在接口封装上做得简单易用,就连在底层实现上也是自成一派,比起原生的HttpURLConnection,可以说是有过之而无不及,现在已经成了广大Android开发者首选的网络通信库。首先需要获取HttpURLConnection的实例,一般只需创建一个URL对象,并传入目标的网络地址,然后调用一下openConnection()方法即可。添加上述依赖会自动下载两个库:一个是OkHttp库,一个是Okio库,后者是前者的通信基础。然后修改MainActivity中的代码。
原创
发布博客 2024.08.15 ·
1552 阅读 ·
44 点赞 ·
0 评论 ·
19 收藏

【安卓】Service生命周期与前台活动

在项目的任何位置调用了Context的startService()方法,相应的Service就会启动,并回调onStartCommand()方法。服务几乎都是在后台运行的,它的系统优先级还是比较低的,当系统出现内存不足的情况时,就有可能会回收掉正在后台运行的服务。如果需要服务可以一直保持运行状态,而不会由于系统内存不足的原因导致被回收,就可以考虑使用前台服务。前台服务和普通服务最大的区别就在于,它会一直有一个正在运行的图标在系统的状态栏显示,下拉状态栏后可以看到更加详细的信息,非常类似于通知的效果。
原创
发布博客 2024.08.15 ·
910 阅读 ·
20 点赞 ·
0 评论 ·
13 收藏

【安卓】Service的基本用法

新建一个ServiceTest项目,然后右击com.example.servicetest→New→Service→Service。每个Service中最常用到onCreate()、onStartCommand()和onDestroy()这3个方法其中onCreate()方法会在Service创建的时候调用,onStartCommand()方法会在每次Service启动的时候调用,onDestroy()方法会在Service销毁的时候调用。
原创
发布博客 2024.08.14 ·
1096 阅读 ·
26 点赞 ·
0 评论 ·
21 收藏

【安卓】多线程编程

注意,在这个方法中是不可以进行UI操作的。Looper:Looper是每个线程中的MessageQueue的管家,调用Looper的loop()方法后,就会进入一个无限循环当中,然后每当发现MessageQueue中存在一条消息时,就会将它取出,并传递到Handler的handleMessage()方法中。发送消息一般是使用Handler的sendMessage()方法、post()方法等,而发出的消息经过一系列地辗转处理后,最终会传递到Handler的handleMessage()方法中。
原创
发布博客 2024.08.14 ·
598 阅读 ·
17 点赞 ·
0 评论 ·
6 收藏

【安卓】播放多媒体文件

在app/src/main这个目录下右击app/src/main→New→Directory,新建assets目录,在这个目录下放入一个音频文件。然后修改MainActivity中的代码。新建一个目录来放视频文件,右击app/src/main/res→New→Directory,在弹出的对话框中输入“raw”,然后修改MainActivity中的代码。在Android中播放音频文件一般是使用MediaPlayer类实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使播放音乐的工作变得十分简单。
原创
发布博客 2024.08.13 ·
1414 阅读 ·
19 点赞 ·
0 评论 ·
21 收藏

【安卓】调用摄像头和相册

新建一个CameraAlbumTest项目,然后修改activity_main.xml中的代码。此时运行程序会报一个错:Unable to decode stream: java.io.FileNotFoundException,没查到错是什么原因导致的,但是有解决方法。在res文件下找到xml目录(如果没有在res目录下新建目录)新建file,取名file_paths.xml。external-path就是用来指定Uri共享路径的,name属性的值可以随便填,path属性的值表示共享的具体路径。
原创
发布博客 2024.08.13 ·
1386 阅读 ·
29 点赞 ·
0 评论 ·
13 收藏

【安卓】连接真机和使用通知

第四个参数用于确定PendingIntent的行为,有FLAG_ONE_SHOT、FLAG_NO_CREATE、FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT这4种值可选,通常情况下这个参数传入0就可以了。通知的重要等级主要有IMPORTANCE_HIGH、IMPORTANCE_DEFAULT、IMPORTANCE_LOW、IMPORTANCE_MIN这几种,对应的重要程度依次从高到低。打开手机的设置,找到关于手机,点开之后,找到开发者选项界面。
原创
发布博客 2024.08.12 ·
685 阅读 ·
14 点赞 ·
0 评论 ·
7 收藏

【安卓】自己创建内容提供器ContentProvider

uri参数用于确定查询哪张表,projection参数用于确定查询哪些列,selection和selectionArgs参数用于约束查询哪些行,sortOrder参数用于对结果进行排序,查询的结果存放在Cursor对象中返回。uri参数用于确定更新哪一张表中的数据,新数据保存在values参数中,selection和selectionArgs参数用于约束更新哪些行,受影响的行数将作为返回值返回。(6) getType() :根据传入的内容URI返回相应的MIME类型。#表示匹配任意长度的数字。
原创
发布博客 2024.08.12 ·
751 阅读 ·
13 点赞 ·
0 评论 ·
12 收藏

【安卓】访问其他程序中的数据

Android系统中自带的通讯录、短信、媒体库等程序都提供了类似的访问接口,这就使得第三方应用程序可以充分地利用这部分数据实现更好的功能。想要访问ContentProvider中共享的数据,就一定要借助ContentResolver类,可以通过Context中的getContentResolver()方法获取该类的实例,通过Uri对指定应用的表进行增删改查,其中insert()方法用于添加数据,update()方法用于更新数据,delete()方法用于删除数据,query()方法用于查询数据。
原创
发布博客 2024.08.11 ·
1173 阅读 ·
21 点赞 ·
0 评论 ·
15 收藏

【安卓】SQLite数据库存储-创建数据库与增删改查

不同的是,当数据库不可写入的时候(如磁盘空间已满),getReadableDatabase()方法返回的对象将以只读的方式打开数据库,而getWritableDatabase()方法则将出现异常。第三个参数是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可。SQLiteOpenHelper的构造方法里接收的第四个参数代表的就是版本号,第一次输入的是1,要更新数据库,输入的值就要比上一次大。
原创
发布博客 2024.08.09 ·
1588 阅读 ·
31 点赞 ·
0 评论 ·
25 收藏

我站在黄昏的余晖中,眺望着天空那温柔的渐变色。天边淡淡的橙色与淡紫色交织在一起,仿佛是大自然的调色盘,将一天的色彩缓缓收尾。没有云彩的天空显得格外清澈,让人的心情也随之平静下来。

发布动态 2024.08.08

【安卓】SharedPreferences存储

SharedPreferences使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的;如果存储的数据是一个字符串,那么读取出来的数据仍然是字符串。
原创
发布博客 2024.08.08 ·
937 阅读 ·
20 点赞 ·
0 评论 ·
27 收藏

【安卓】文件存储

第二个参数是文件的操作模式,主要有MODE_PRIVATE和MODE_APPEND两种模式可选,默认是MODE_PRIVATE,表示当指定相同文件名的时候,所写入的内容将会覆盖原文件中的内容,而MODE_APPEND则表示如果该文件已存在,就往文件里面追加内容,不存在就创建新文件。文件存储是Android中最基本的数据存储方式,它不对存储的内容进行任何格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合存储一些简单的文本数据或二进制数据。此时运行程序,在输入框中输入信息之后退出。
原创
发布博客 2024.08.08 ·
1204 阅读 ·
26 点赞 ·
0 评论 ·
10 收藏

【安卓】发送自定义广播

再在MyBroadcastReceiver中使用了abortBroadcast()方法将这条广播截断,后面的BroadcastReceiver将无法再接收到这条广播。重新运行程序,并点击“Send Broadcast”按钮,此时只有MyBroadcastReceiver中的Toast信息能够弹出,说明这条广播经过MyBroadcastReceiver之后确实终止传递了。发送有序广播只需要改动一行代码,将sendBroadcast()方法改成sendOrderedBroadcast()方法。
原创
发布博客 2024.08.07 ·
1131 阅读 ·
24 点赞 ·
0 评论 ·
10 收藏

【安卓】接收系统广播

有序广播(ordered broadcasts)则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个BroadcastReceiver能够收到这条广播消息,当这个BroadcastReceiver中的逻辑执行完毕后,广播才会继续传递。所以此时的BroadcastReceiver是有先后顺序的,优先级高的BroadcastReceiver就可以先收到广播消息,并且前面的BroadcastReceiver还可以截断正在传递的广播,这样后面的BroadcastReceiver就无法收到广播消息了。
原创
发布博客 2024.08.07 ·
1013 阅读 ·
26 点赞 ·
0 评论 ·
22 收藏

【安卓】动态加载布局技巧

其中,large就是一个限定符,那些屏幕被认为是large的设备就会自动加载layout-large文件夹下的布局,小屏幕的设备则还是会加载layout文件夹下的布局。最小宽度限定符(smallest-widthqualifier)允许我们对屏幕的宽度指定一个最小值(以dp为单位),然后以这个最小值为临界点,屏幕宽度大于这个值的设备就加载一个布局,屏幕宽度小于这个值的设备就加载另一个布局。将多余的代码删掉,只留下一个左侧Fragment,并让它充满整个父布局。
原创
发布博客 2024.08.06 ·
821 阅读 ·
27 点赞 ·
0 评论 ·
8 收藏

安卓中Fragment的生命周期

销毁状态:Fragment总是依附于Activity而存在,因此当Activity被销毁时,与它相关联的Fragment就会进入销毁状态。停止状态:当一个Activity进入停止状态时,与它相关联的Fragment就会进入停止状态,或者通过调用FragmentTransaction的remove()、replace()方法将Fragment从Activity中移除,但在事务提交之前调用了addToBackStack()方法,这时的Fragment也会进入停止状态。
原创
发布博客 2024.08.06 ·
695 阅读 ·
8 点赞 ·
0 评论 ·
7 收藏

安卓碎片Fragment

为了方便Fragment和Activity之间进行交互,FragmentManager提供了一个类似于findViewById()的方法,专门用于从布局文件中获取Fragment的实例。调用FragmentManager的findFragmentById()方法,可以在Activity中得到相应Fragment的实例,然后就能轻松地调用Fragment里的方法了。(4) 向容器内添加或替换Fragment,一般使用replace()方法实现,需要传入容器的id和待添加的Fragment实例。
原创
发布博客 2024.08.05 ·
998 阅读 ·
26 点赞 ·
0 评论 ·
32 收藏
加载更多