
android
文章平均质量分 54
行走的鱼er
这个作者很懒,什么都没留下…
展开
-
service启动的正确姿势
新的 Context.startForegroundService() 函数将启动一个前台服务。现在,即使应用在后台运行,系统也允许其调用 Context.startForegroundService()。不过,应用必须在创建服务后的五秒内调用该服务的 startForeground() 函数。如果针对 Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用 startService() 函数,则该函数将引发一个 IllegalStateException。原创 2023-03-14 20:46:05 · 773 阅读 · 1 评论 -
CopyOnWriteArrayList和ArrayList遍历和删除操作区别
复制出一个新的容器,然后在这个新的容器里进行修改元素的操作,而后面进行的读操作则继续在旧容器中读取。修改完之后,再将原容器的引用指向新的容器,而旧的容器则进行垃圾回收。对一个容器进行修改操作(添加、删除、编辑)时候,不会直接对当前容器修改,而是先将当前容器进行 Copy,CopyOnWrite 原理。原创 2023-03-06 16:28:59 · 542 阅读 · 2 评论 -
Android中设置org.gradle.jvmargs
Android中设置org.gradle.jvmargs转载 2023-01-29 15:54:59 · 2168 阅读 · 0 评论 -
为何Google要将LiveData设计成粘性的?
相信很多人在职业生涯的面试过程中都被问过一个问题?面试官:我看你简历上有写LiveData,那你能说说LiveData是粘性的吗?这确实是一个值得深入思考的知识点,今天就让我们站在Google设计者的角度来深入学习一下LiveData。转载 2022-12-15 10:59:23 · 158 阅读 · 0 评论 -
android view获取到焦点高亮效果如何去掉
1.最简单android:defaultFocusHighlightEnabled="false"或 代码设置binding.xxx.defaultFocusHighlightEnabled = false2.设置view 不要获取到焦点,有些场景会有问题,比如硬件控制焦点那种,会自动将焦点转移到下个可以获得到焦点的view原创 2022-12-06 11:07:05 · 1422 阅读 · 0 评论 -
Android 设置ImageView宽度固定,其高度按比例缩放适应
首先,定义ImageView,在该ImageView中,我们需要设置属性android:adjustViewBounds="true",他的意思图片是否保持宽高比。切记的一点是该属性需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。 <ImageView android:id="@+id/img_list" android:layout_width="fill_parent" android:layout_he...转载 2021-04-01 10:58:55 · 1289 阅读 · 0 评论 -
DialogFragment setCanceledOnTouchOutside NullPointerException
DialogFragment.getDialog.setCancelable(false);DialogFragment.getDialog.setCanceledOnTouchOutside(false);NullPointerException调用时机晚些即可比如在onCreateView中调用原创 2020-06-09 14:32:39 · 523 阅读 · 0 评论 -
Observable map doOnNext
Observable map和doOnNext跟在.subscribeOn(Schedulers.io())或.observeOn(AndroidSchedulers.mainThread())后面会执行在对应的线程原创 2020-01-22 14:34:01 · 401 阅读 · 0 评论 -
webview canGoBack() 多次返回true
in shouldOverrideUrlLoading you can't invoke view.loadUrl........} else if (url.startsWith("http://") || url.startsWith("https://")) {// view.loadUrl(url); 此处使用不当,导致如题问题// ...原创 2019-12-23 17:53:31 · 2231 阅读 · 0 评论 -
remoteview设置渐变色
某些场景如自定义notification设置GradientDrawable效果,需要通过转为bitmap实现,drawable(包含GradientDrawable)转为bitmappublic Bitmap convertToBitmap(Drawable drawable, int widthPixels, int heightPixels) { Bitmap mutabl...原创 2019-12-03 16:58:03 · 431 阅读 · 0 评论 -
appsflyer 深度连接
appsflyer 深度连接app分享1.生成h5url,根据要求写h5,第三方社交app通过h5生成分享内容2.点击链接进入h53.点击h5内appsflyer连接(添加深度连接即再连接后加?af_dp=xx),点击跳转APP,app收到的为af_dp值(即深度连接)https://support.appsflyer.com/hc/zh-cn/articles/208874366-...原创 2019-11-26 16:43:59 · 2006 阅读 · 0 评论 -
一个简单问题搜罗出一堆问题
Web点击按钮无响应(按钮功能是如本地没有app,点击下载,下载后再点击安装)追查出一些问题1.SDK内部搜集设备号,调用tm.getDeviceId()前没有申请权限导致异常,也没有捕获异常,后续流程没有执行到设备号属于隐私,需要额外申请权限2.8.0及以上系统会出现红色报警,无法正常显示页面可以解决域名问题,也可以程序上针对8.0及以上系统关闭该安全策略if (Build.VERS...原创 2019-11-01 14:39:12 · 222 阅读 · 0 评论 -
PendingIntent, Notification,broadcastReceiver使用遇到的坑
转载自https://www.itread01.com/content/1542816187.htmlPendingIntent, Notification,broadcastReceiver使用遇到的坑使用PendingIntent結合 alarmManager 傳送定時廣播,收到廣播的時候顯示notification的功能,遇到了好多坑。先上程式碼:一、pendingInten...转载 2019-10-24 18:07:21 · 699 阅读 · 0 评论 -
判断是否在主线程
static boolean isMain() { return Looper.getMainLooper().getThread() == Thread.currentThread();}转载 2016-02-24 10:15:53 · 312 阅读 · 0 评论 -
NDK integration is deprecated in the current plugin
备忘:如果在添加“abiFilter”之后Android Studio出现以下提示:NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.则在项目根目录的gradle.properties文件中添加:android.useDepreca原创 2017-01-19 10:14:57 · 356 阅读 · 0 评论 -
FragmentPagerAdapter与FragmentStatePagerAdapter区别
所遇到问题:在一个个activity界面有一个viewpager,wiewpager中有两个fragment,从当前界面进入到另一个进程后再次返回发现原来fragment不见了,原因是FragmentPagerAdapter中这里fragment不为空导致getItem没有调用,故fragment没有重新被创建,老的fragment实例attach也没有用http://www.cnbl原创 2016-11-30 14:24:07 · 389 阅读 · 0 评论 -
布局文件适配不同分辨率设备
原创 2016-09-27 18:06:14 · 357 阅读 · 0 评论 -
布局文件适配不同屏幕尺寸
原创 2016-09-27 18:04:30 · 496 阅读 · 0 评论 -
aar中引用的第三方jar与引用aar项目重复解决方案
最近遇到一个问题,aar包中引入的第三方jar与引入aar的项目重复,试过很多方案没搞定,看到provided突然产生灵感,尝试编译aar时候不把jar放进去想法,试了下果然可以。记录下来备忘,希望也能帮助到一些人。aar 依赖第三方jar时候不要使用compile而使用provided(不会将jar编译进aar中)// 生成aar依赖脚本dependencies { prov原创 2016-09-16 16:42:46 · 8712 阅读 · 1 评论 -
hideSystemUI
@TargetApi(Build.VERSION_CODES.HONEYCOMB)public void hideSystemUI() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ View rootView = this.getWindow().getDecorView(); if (ro原创 2016-08-06 15:32:47 · 549 阅读 · 0 评论 -
截屏一种方式
?123456789101112131415161718192021222324252627282930313233原创 2016-07-19 10:21:45 · 433 阅读 · 0 评论 -
加载不同大小的图片消耗的内存大小
比如加载1Mb和5Mb图片哪种消耗内存多?如果选择5Mb,说明没有了解图片加载的本质,其实Bitmap加载图片消耗内存大小只和图片像素数BitmapFactory.Options(如 inPreferredConfig)原创 2016-07-23 16:34:08 · 813 阅读 · 0 评论 -
BottomSheet
https://github.com/soarcn/BottomSheet转载 2016-07-01 14:52:38 · 242 阅读 · 0 评论 -
加载不同dpi目录下图片产生的内存消耗不一样
加载比当前设备dpi越低的目录,产生的内存消耗越大原创 2016-07-22 17:38:32 · 616 阅读 · 0 评论 -
android反编译、修改代码、打包
android反编译、修改代码、打包(使用工具android killer)1、反编译直接将apk拖入即可2、修改代码1)直接用smali语言编写,然后编译、安装即可2)模仿目标apk环境单独编译出想要的类,目标类包名和所引用的类都要模拟一致,用class.smali替换原来的类,然后编译、安装3)可以放入so文件,资源文件。。。原创 2016-05-13 09:32:51 · 675 阅读 · 0 评论 -
获取bitmap字节数
static int getBitmapBytes(Bitmap bitmap) { int result; if(VERSION.SDK_INT >= 12) { result = bitmap.getByteCount(); } else { result = bitmap.getRowBytes() * bitmap.getHeight转载 2016-02-24 10:15:09 · 3510 阅读 · 0 评论 -
是否有Root权限
Process process = null; DataOutputStream os = null; BufferedInputStream br = null; try { String cmd = "ls /data/app"; // 切换到root帐号 process =原创 2016-04-27 11:11:25 · 368 阅读 · 0 评论 -
判断android设备是否root
try { if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())) { isRooted = false; } else { isRooted = true; }} catch (Exception原创 2016-04-27 11:08:44 · 865 阅读 · 0 评论 -
recyclerview 使用注意
recyclerview 使用注意导入的support版本从低版本替换为高版本)后可能出现排版问题compile('com.android.support:recyclerview-v7:22.2.1') { exclude group: 'com.android.support', module: "support-v4" }升到compile('co原创 2017-05-12 09:36:02 · 257 阅读 · 0 评论 -
Glide常规用法
转自 http://www.cnblogs.com/whoislcj/p/5558168.htmlAndroid图片缓存之初识Glide前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架。技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实现方案不能满足项目的转载 2017-05-28 07:58:58 · 456 阅读 · 0 评论 -
Android 进程与线程
当某个组件第一次运行的时候,Android启动了一个进程。默认的,所有的组件和程序运行在这个进程和线程中。也可以安排组件在其他的进程或者线程中运行进程组件运行的进程由manifest file控制。组件的节点 — , , , 和 — 都包含一个 process 属性。这个属性可以设置组件运行的进程:可以配置组件在一个独立进程运行,或者多个组件在同一个进程运行。甚至可以多个程序在一个进程中运行——转载 2010-02-08 17:56:00 · 327 阅读 · 0 评论 -
recyclerview嵌套总结
案例介绍:外层recyclerview(VERTICAL)内层几个recyclerview(HORIZONTAL)CASE 1 内层列表存在滑动位移时,出现不同列表位置错乱情况分析:外层列表ViewHolder复用所致解决办法:1.一个内层列表单独为一个itemtype2.考虑外层onBindViewHolder里对错乱视图进行复位处理CASE 2 上下滑动有卡顿情况分...原创 2019-10-10 10:39:07 · 234 阅读 · 0 评论 -
android 非SDK API blacklist处理
现象:Android P上的提醒弹窗 (Detected problems with API compatibility(visit g.co/dev/appcompat for more info)用veridex检测一堆问题,优先解决blacklist问题#22: Reflection blacklist Landroid/service/media/IMediaBrowserServ...原创 2019-08-29 21:49:42 · 1073 阅读 · 1 评论 -
recyclerview item 高度不正确
recyclerview 添加view一般都会public BaseViewHolder newViewHolder(ViewGroup parent, int viewType) {return new ViewHolderNormal(LayoutInflater.from(parent.getContext()).inflate(R.layout.xxx, parent, false)...原创 2019-04-17 10:11:41 · 2912 阅读 · 0 评论 -
判断是否在主线程
public static boolean isOnMainThread() { return Looper.myLooper() == Looper.getMainLooper(); return Thread.currentThread() == Looper.getMainLooper().getThread();}public static void assertMain...原创 2019-04-12 18:26:00 · 1069 阅读 · 0 评论 -
objectbox数据库
总结下objectbox数据库使用中遇到的坑和使用技巧1.编译时xx类找不到,你必须先保证除了数据库相关代码之外的代码中没有错误,可以直接通过命令行执行看具体编译错误原因,最后rebuild下2.objectbox-models别忘记提交版本管控,否则升级会崩溃3.修改表结构记得加@Uid(4279138568760652606L),开发阶段自己决定是否添加,这充其量算个浅浅的坑4...原创 2019-04-12 17:18:26 · 468 阅读 · 0 评论 -
圆角 RoundedBitmapDrawable
RoundedBitmapDrawable bitmapDrawable = RoundedBitmapDrawableFactory.create(view.getContext().getResources(), bitmap); bitmapDrawable.setCornerRadius(finalRadius); // 圆角bitmapDrawable.setCircular(true...原创 2019-04-10 21:12:20 · 247 阅读 · 0 评论 -
andriod 开发随手备忘
btn_record.getLocationInWindow(location); //获取在当前窗口内的绝对坐标btn_record.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标UI刷新确保刷新是在Ui线程,如下面代码在子线程刷新无效adapter.notifyDataSetChanged();...原创 2019-06-29 10:26:04 · 140 阅读 · 0 评论 -
gradle用法备忘
//给生成的apk文件重命名, applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && ou...原创 2019-04-10 10:55:44 · 135 阅读 · 0 评论 -
SVGA动画方案备忘
想了解SVGA:https://www.jianshu.com/p/dfa16d9d67cd想看看效果:http://svga.io/svga-preview.html想在android项目使用:https://github.com/yyued/SVGAPlayer-Android想在ios项目使用:https://github.com/yyued/SVGAPlayer-Ios坑:...原创 2018-12-20 17:41:16 · 1141 阅读 · 0 评论