Android
kururunga
这个作者很懒,什么都没留下…
展开
-
Android懒加载Fragment
最近在完成需求后在修改代码,发现某些东西写的不恰当,我这边完善下fragment的懒加载。原创 2024-07-30 10:15:20 · 376 阅读 · 0 评论 -
Car车载开发之Sensor Logic篇排序优化篇
针对此篇博客的代码,说实话,太多了,不够简洁,而且非常麻烦,耦合非常严重,我这边优化了一版,用两个for循环实现。原创 2022-09-01 16:07:11 · 514 阅读 · 0 评论 -
android AutoMotive 之CAN signal模拟property
最近在获取和监听sensor的一些property,由于没有板子,需要模拟信号监听改变。经过查阅,发现有可以通过command-line两种方式,一种是carservice,另一个是Ivhal.其中,通过carservice改变属性,在设备重启后数据就消失了,并没有真正修改到。所以我们通过lshal的方式去修改,能保证修改的属性数据真实可靠。步骤1.adb root2.adb shell3.执行su,获取权限4.列出所有propertylshal debug android.hardware.原创 2022-05-20 10:58:50 · 1377 阅读 · 7 评论 -
近日工作事项小结
之前主要做的车载上的CarAccount,主要是人脸注册,人脸登录,数据上传,这块,涉及的模块很多,比如我这边CarAccount调用了CarCamera的compare,CarCamera又调用了底层,通过aidl回调给我。然后数据上传又是台湾的人给我的jar包,我把信息baseinfo整理好,以及camera回调来的image信息,然后调用aar去上传。然后现在在做一个日志拷贝的东西,kotlin写的,将Music中的日志拷贝抽离出来,在原先拷贝mtklog的基础上,拷贝/data/system/d原创 2022-04-15 18:26:33 · 2083 阅读 · 0 评论 -
Android jetpack之lifecycle
现在貌似流行jetpack这些东西了,我这边写几篇博客记录下。lifecycle的意图就是将之前和界面生命周期需要绑定操作的组件或者模块进行分离,单独自己管理,而不强依赖于界面,实际上依赖于那个界面,但是抽出到其他类进行书写,有利于Activity/Fragment/Service代码的简洁,从而降低模块间的耦合度,并降低内存泄漏发生的可能性。步骤:Activity/Fragment1.导入相应的库 implementation "androidx.lifecycle:lifecycle-原创 2022-02-23 11:19:57 · 1483 阅读 · 0 评论 -
Android Room数据库升级
Room数据库升级和原生数据库的概念是一致的:1.新建新表2.从旧表导入数据到新表3.删除旧表4.重命名新表具体代码如下:1.构建Migration ,里面完成表的操作。 static final Migration MIGRATION_1_2 = new Migration(1, 2) { @Override public void migrate(SupportSQLiteDatabase database) { // Crea原创 2022-02-16 14:36:01 · 2626 阅读 · 0 评论 -
Android原生数据库的升级更新OnUpgrade
最近从Room转移到原生sqlite,数据库更新这样处理。1 // 如果数据库文件不存在,只有onCreate()被调用(该方法在创建数据库时被调用一次)2 public abstract void onCreate(SQLiteDatabase db);3 // 如果数据库文件存在,会调用onUpgrade()方法升级数据库,并更新版本号。4 public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion原创 2022-02-15 16:12:23 · 1788 阅读 · 0 评论 -
Android浏览器webview的加载优化(加载不出白屏,加载一半屏幕,一直加载,加载页面截断,某些页面部分无法点击但是刷新几次后能点击等一系列疑难杂症)
全局搜索结果页分首页,视频,新闻,图片,本机五个标签。其中前四个都是接的百度搜索引擎,但是每个页面做了特殊化处理,比如隐藏百度各个页面的顶部分类tab,只显示内容。下面说下优化webview加载1.接入腾讯x5 webview,这个很关键,如果你的工程和x5关联很大,应该采用静态化内核的方案去接入而不是仅仅下载一个jar。2.webview不采用布局的方式,而是直接new,传入的context是全局的context而不是activity的context。3.我的页面是顶部搜索框,下面tablayout原创 2021-03-24 15:05:52 · 1445 阅读 · 1 评论 -
android 处理webView关闭音视频还在播放
在Activity或者fragment对应得生命周期里这样写: @Override public void onResume() { super.onResume(); mTecentWebview.onResume(); mTecentWebview.resumeTimers(); } @Override public void onPause() { super.onPause();原创 2021-03-17 14:41:15 · 616 阅读 · 0 评论 -
Android 浏览器图片下载无法识别无图片显示其他的坑
目前浏览器下载图片一般就是没问题的,但是我对图片地址的判断是 if (strFolderNameLC.endsWith(".jpeg") || strFolderNameLC.endsWith(".gif") || strFolderNameLC.endsWith( ".png") || strFolderNameLC.endsWith(".bmp") || strFolderNameLC.endsWith(".wbmp") || strFo原创 2021-03-05 11:32:16 · 1110 阅读 · 0 评论 -
Android字体的适配问题
很明显,当Android系统设置了超大字体的时候,你的应用里设置的sp字体就会跟随系统变得很大,导致界面混乱有两个解决办法。1.Activity设置字体我们可以在BaseActivity中设置 @Override public Resources getResources() { Resources res = super.getResources(); Configuration config = new Configuration();原创 2021-02-07 14:59:08 · 1271 阅读 · 0 评论 -
git之多人协作我是如何处理代码冲突的
多人负责同一个项目 难免会碰到这种情况,我会用下面两种情况去解决。一,最优的选择1.先执行git stash save mychange2.拉下最新代码git pull --rebase3.将暂存区代码取下git stash pop4.git终端会提示哪个类冲突了,去相应的类解决就行了二.如果你不小心直接commit 然后push后,去代码审核处发现冲突了 can not merge,那你应该这样做1.拷贝你现在的分支(A)到某个本地文件夹(copyA),然后把提交的记录给放弃ab原创 2021-01-31 00:42:01 · 651 阅读 · 1 评论 -
Android Recyclerview轻松实现分割线ItemDecoration
每个Item下加View显然不是最好的选择,因为最后一个View你还得进行判断隐藏,采用ItemDecoration的方式才是最优解。1.添加依赖: compile 'com.yqritc:recyclerview-flexibledivider:1.4.0'2.设置ItemDecoration即可mRvSearchPageHistory.addItemDecoration(new HorizontalDividerItemDecoration.Builder(mContext)原创 2021-01-19 09:47:59 · 251 阅读 · 0 评论 -
Android SVG的使用
打开AndroidStudio之后选择该svg文件,然后正常引用就行原创 2021-01-18 18:24:27 · 253 阅读 · 0 评论 -
Android Textview点击闪屏穿透问题问题
最近在全局搜索里开发一个浏览器,碰到了底部点击新建窗口,闪屏,有时候点击事件还没反应按下去会显示主题,最后发现是对导航栏的处理问题,底部导航栏处理前需要判断是否可见,可见再隐藏,不可见就不用。 /** * 隐藏虚拟按键,并且全屏 */ public static void hideBottomUIMenu(AppCompatActivity context,Window window) { //隐藏虚拟按键,并且全屏 if (Build.V原创 2021-01-12 18:49:20 · 351 阅读 · 0 评论 -
Android AgentWeb webview onkey返回两次的问题
onkey这个方法里如果不加event.getAction() == KeyEvent.ACTION_DOWN,则会执行两次,导致返回两次 webView = mAgentWeb.getWebCreator().getWebView(); webView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCod原创 2020-12-30 17:26:43 · 859 阅读 · 0 评论 -
Android基于Okhttp 3.5对Okhttp源码解析一
为什么不用最新版本 4.9呢?因为kotlin版本的不太好看。基于Okhttp 3.5版本解析Exec Code:同步:OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().build();Call call = client.newCall(request);call.execute();异步:enquene code:OkhttpClient client = new Ok原创 2020-12-30 10:54:39 · 437 阅读 · 0 评论 -
Android WebView和AgentWebview不刷新页面不闪屏隐藏头部或者某个标签
现在全局搜索需要加入这个功能,然而返回的地址却是带有头部百度和搜索框的,这些本来是可以通过tradeid进行客制化去掉,但是百度没抽出人来做,所以需要自己处理。如果我们在webview中的WebViewClient里的OnPageFinished方法中做的话会出现闪屏,而且调用时机也可能会延迟,造成打开页面后隔了几秒才隐藏网页头部,显然不是我们要的效果,而OnPageStarted方法调用隐藏也没用。后面找到WebChromeClient的onProgressChanged进行处理setWebChrom原创 2020-12-29 17:58:04 · 691 阅读 · 0 评论 -
Greendao的根据某个字段(非主键)插入去重以及根据某个字段删除对应的行条目
目前资料上greendao的删除基本都是根据主键删除的,如果我想通过里面一个字段比如name进行删除呢?下面是我对于全局搜索apk的一个greendao的小结。1.删除某个字段的整条数据简单封装下Greendao:GreendaoUtil.javapublic class GreendaoUtil { private volatile static GreendaoUtil ourInstance; private static String name = "search_his原创 2020-12-25 19:55:53 · 1347 阅读 · 3 评论 -
EditText中imeOptions属性使用及设置无效解决
最近在做重做全局搜索相关的apk,包含本地的设置选项和百度的相关搜索,下面是软键盘相关。虽然通常输入法软键盘右下角会是回车按键但我们经常会看到点击不同的编辑框,输入法软键盘右下角会有不同的图标点击浏览器网址栏的时候,输入法软键盘右下角会变成“GO”或“前往”而我们点击Google搜索框,输入法软键盘右下角会变成 放大镜 或者“搜索”而决定这个图标的变换的参数就是EditText中的 android:imeOptionsandroid:imeOptions的值有actionGo、 actionSe原创 2020-12-24 11:40:28 · 707 阅读 · 0 评论 -
Android性能调优之Copyonwrite
写入时复制(CopyOnWrite)思想 写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此做法主要的优点是如果调用者转载 2020-12-21 10:49:51 · 245 阅读 · 0 评论 -
Android注解元注解详解之带你生成简易版Butterknife
首先什么是注解?@Override就是注解,它的作用是:1、检查是否正确的重写了父类中的方法。2、标明代码,这是一个重写的方法。1、体现在于:检查子类重写的方法名与参数类型是否正确;检查方法private/final/static等不能被重写。实际上@Override对于应用程序并没有实际影响,从它的源码中可以出来。2、主要是表现出代码的可读性。Override作为Android开发中熟知的注解,Override只是注解的一种体现,更多时候,注解还有以下作用:降低项目的耦合度。自动完成一些规原创 2020-12-14 16:24:35 · 163 阅读 · 0 评论 -
Mtk Android(11) R版本 设置搜索加入条目
通用搜索Android 8.0 为“设置”菜单添加了经过扩展的搜索功能。本文档介绍了如何添加设置,以及如何确保正确地将其加入“设置”搜索的索引中。创建可编入索引的设置需要编入索引的每个“设置”片段都会实现 Indexable 接口,并且需要静态字段:public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER为您的片段进行设置以编入索引后,将其添加到以下位置中的 SearchIndexableResources:packag原创 2020-11-06 09:50:43 · 727 阅读 · 0 评论 -
2020Android进程保活的实现(附项目以及代码)
一.原因:比如一些聊天应用如果退出被杀死就收不到消息,或者金融类应用收到转账消息,应用被杀了就收不到通知二.现状:随着谷歌的不断升级改造我们知道,Android 系统会存在杀后台进程的情况,并且随着系统版本的更新,杀进程的力度还有越来越大的趋势。系统这种做法本身出发点是好的,因为可以节省内存,降低功耗,也避免了一些流氓行为。为此作为开发者的我们被老板们逼着炒碎啦心,各种办法尝试,今天为各位大佬带来一篇优雅的保活模式,那就是后台运行白名单。 下次被产品说「莫某某软件都可以保活,为什么我们不行!」的时候,原创 2020-09-10 05:49:01 · 1520 阅读 · 1 评论 -
AndroidStudio 3.6以后的视图绑定在fragment以及activity的用法不一问题注意下
在Activity中是 inflate = ActivityLoginBinding.inflate(getLayoutInflater()); setContentView(inflate.getRoot());fragment: View view = inflater.inflate(R.layout.fragment_sub_main, container, false); mFragmentMainBinding= Fragmen原创 2020-09-07 09:51:07 · 671 阅读 · 0 评论 -
老项目由support到AndroidX移植问题
1、support.v4库升级Androidx后getFragmentManager方法便不能使用了,直接结果就是导致tablayout+viewpage的组合报错修改方法:需要activity继承FragmentActivity并且使用FragmentActivity内的方法getSupportFragmentManagerandroidx.fragment.app.FragmentManager内不再有getFragmentManager的方法,写个记录一下2、目前还有很多人在使用dagger原创 2020-08-11 18:43:28 · 273 阅读 · 0 评论 -
androidstudio 运行flutter一直Gradle
Running Gradle task ‘assembleDebug’ 如题,这个问题,很多博客是说将build.gradle里面的 google() jcenter()改成阿里云地址: maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }原创 2020-05-15 11:00:11 · 980 阅读 · 0 评论 -
华为mata30 5G无法连接Androidstudio
有个项目我想用android 10.1测试下,但是这个华为mata30 5G无法连接到as,查了几个方案,1.一个是该设备名字,无用2.打开仅充电选项,无用后来我不插拔数据线底部弹框不点仅充电点传输文件,然后就弹出是否信任此设备,我就知道成功了...原创 2020-05-15 09:06:02 · 1180 阅读 · 0 评论 -
flutter国内镜像配置以及环境变量配置
1.关于flutter的学习我是在flutter中文网看到了,这网站开头配置那块开头就来句这明显不是windows下的配置,其实是这样的:在windows下加两个环境变量:(是用户变量)PUB_HOSTED_URL https://pub.flutter-io.cnFLUTTER_STORAGE_BASE_URL https://storage.flutter-io.cn如图:2.第二部就是将flutter/bin添加到系统变量:更新环境变量要在终端运行 flutter 命令, 你需要添原创 2020-05-15 08:21:14 · 3399 阅读 · 0 评论 -
Android依赖框架下载速度缓慢以及Could not download kotlin-gradle-plugin.jar的问题
这个问题很显然是因为下载超时之类的,这个地址是国外的,我们可以改一下替换项目根目录下build.gradle中的 repositories { jcenter() }为: repositories { maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}参考:h...原创 2020-03-31 18:12:15 · 5272 阅读 · 0 评论 -
GIt分支合并
最近在做一个功能,期间有去做其他模块了,后面补充的交给其他同事去做了,然后今天我再把他拷贝我新建的分支合并到我这里,记一下;1.git fetch //首先是获取下远程的分支有哪些,因为dev_fhr是新建的,不然等会会提示merge不到2.git checkout origin/dev_lwp //切换到远程dev_lwp分支3.git merg...原创 2020-03-24 10:50:41 · 106 阅读 · 0 评论 -
Android性能优化之冷启动问题优化
现在负责这个app体积比较小而且只有一个activity但是冷启动时间超过1s,建议让我优化下。二话不说 ,先查了下冷启动优化的几个要点,总结如下:1.从Application入手,是否进行不需要不必要的初始化操作。2,.从Activity的onCreate方法入手,是否进行了不必要的静态类引入使用以及不需要在这个时候出现的操作,比如初始化一些窗口参数之类的。3.Splash页面跳转至Ma...原创 2020-03-23 15:00:21 · 324 阅读 · 0 评论 -
SQLite数据库.db能读出数据实际导出来却没数据
之前一直都是直接把.db文件导出来看,这几天发现一个数据库一直导出来没表,然后看到一篇博客,知道了原因:你得把 .db-wal 和.db-shw都导出来才看得到,应该是个特例。参考:https://blog.csdn.net/heming9174/article/details/85108035...原创 2020-03-19 10:21:53 · 843 阅读 · 0 评论 -
Android英文文字点击后获取当前点击的英文词并设置阴影
TextView控件本身有很多属性可以进行控制,如果要获取内容只需要getText()方法就可以实现,同时也可以为TextView设置各种监听器。但是,如果想要实现点击获取TextView内部的部分内容,则仅仅靠TextView自带的功能实现起来就比较困难了。比如说TextView文本是一段英文,想要实现点击每个单词以获取单词内容,这该如何实现呢?经过不懈努力,我终于在stackoverflow...转载 2020-03-12 15:27:32 · 474 阅读 · 0 评论 -
moduel制作aar包集成的坑
这几天在做一个其他模块必备的包含网络层,操作层以及widget层的modeul,做完后在demo里试了下发现没啥问题,各个功能点都能测地通,就将改modeul打成aar包,打完后集成到其他很多模块里,后面我发现有些功能不是很完全,就打新的aar包但是名字没变直接覆盖过去,clean以及rebuild后发现对应的类没改变,很奇怪,最后的解决方式是重新生成拷贝过去修改aar包的名字再compile。...原创 2020-03-09 10:13:56 · 217 阅读 · 0 评论 -
GsyVideoplayer返回键全屏/非全屏切换的处理
现在视频板块的某个条目下(已知是activity内的fragment),点击播放全屏后再手势返回直接是提示按两次退回桌面,我这里实际要做的是手势返回是回到正常非全屏状态而不是退出去,因为正常来讲,fragment是无法拦截返回事件的,所以我这里由两种思路:第一种,让fragment在activity中注册然后当fragment需要拦截的时候直接设为true拦截掉回调给fragment处理,这也是官...原创 2020-03-01 20:52:47 · 3919 阅读 · 1 评论 -
The supplied build action failed with an exception
现在远程办公,导入公司三年前项目报错错误1:The supplied build action failed with an exception.用gradlew --stacktrace发现报错2:org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.android.support:mul...原创 2020-02-19 21:14:52 · 4470 阅读 · 0 评论 -
ExpandableTextView展开加动画的textview
经常看新闻或者视频介绍的话经常文字需要有展开功能,如下像这种的话githu如果自己的写的话肯定就是一个button加两个textview或者一个textview动态设置行数(也可自定义view实现),但你也要处理动画问题。这里我找了个库:https://github.com/Manabu-GT/ExpandableTextView使用起来也是非常简单而且要求很低,只需要api>8即...原创 2020-02-17 12:06:51 · 378 阅读 · 1 评论 -
Android炫酷的layoutmanager
github:1.https://github.com/yuyakaido/CardStackViewhttps://github.com/DingMouRen/LayoutManagerGroup原创 2019-12-10 17:49:37 · 341 阅读 · 0 评论 -
Android导入三年前的工程引发的一系列问题
由于最近在做朋友圈评论这块,想找个好看的方案,github上看到一个项目感觉挺不错的:https://github.com/jaydenxiao2016/AndroidFireUI还行,基本满足我的要求,然后我就down下来导入,首先要改的就是我的gradle-wrapper.properties和根目录下的build.gradle的 classpath ‘com.android.too...原创 2019-12-09 17:40:04 · 121 阅读 · 0 评论