更多问答 >>
-
每日一问 Android 有哪些 位运算 的例子很值得借鉴?
2019-08-13 21:56 -
2019-08-18 21:42
-
每日一问 今天聊一下Gradle 相关,BuildConfig这个类是如何生成的?
2019-08-20 23:27 -
每日一问 Parcelable 为什么效率高于 Serializable ?
2019-08-26 00:02 -
2019-09-01 23:16
-
每日一问 事件分发机制大家应该都熟记于心,默认事件分发是逆序的,有哪些方法可以修改分发顺序?
2019-08-11 21:18 -
每日一问 匿名内部类访问的外部类局部变量为什么要用final 修饰,jdk8为啥不需要了? 2/3
2019-08-08 23:51 -
每日一问 AppCompatTextView 与 TextView 1/3
2019-08-07 01:29 -
每日一问 大家应该都有泛型在编译期会被擦除的概念,那么为什么我们在运行时还能读取到呢? 3/3
2019-08-04 19:44 -
2019-08-01 21:44
一个全屏的页面(比如闪屏页)跳往一个非全屏页面(就是有状态栏的页面,比如首页),在非全屏页打开时会出现状态栏突然弹出来的闪动效果。
有没有办法让它们可以平滑过渡啊?
一个
Activity
,重复打开关闭,为什么会出现onCreate()
,onDestroy()
不相邻的情况(会出现交叉)?这是正常的吗?我是新建了一个空的工程,在
MainActivity
里一个按钮,打开MyActivity
;而在MyActivity
里有一个按钮关闭自己。然后,打印了MyActivity
的onCreate()
和onDistroy()
日志。onDestory不是立即执行的,可以参考 https://www.wanandroid.com/wenda/show/13244
谢谢大神。
大部分博文多说 RecyclerView 替代 ListView, 通过 UI Automator viewer 发现微信的 “微信”tab fragment 中的列表还在使用 ListView。 为啥微信不用RecyclerView。
斗胆做个猜测: 微信是2011推出的App,早期的很多App都只能用ListView,至于为什么一直没替换,可能是ROI不高,即替换成本大,而且替换后并不会带来很大的收益(因为ListView本身也可 ...查看更多
斗胆做个猜测: 微信是2011推出的App,早期的很多App都只能用ListView,至于为什么一直没替换,可能是ROI不高,即替换成本大,而且替换后并不会带来很大的收益(因为ListView本身也可以手动实现一套不错的缓存机制)。 即痛点不够,还没到一定要去优化的程度,这样团队就应该去做当下最有价值的事情和解决最棘手的问题,而不是去追新。
HandlerThread中的run和getLooper方法都给对象上了锁,如果getLooper比run方法更快拿到锁,会不会一直等待造成死锁问题?
isAlive() 方法可以避免这种情况吧。
即使先拿到锁,在判断到looper为null的时候,也会调用wait()方法释放掉锁,进入等待状态,等待notifyAll()的唤醒。
直接调用的方法和反射调用的方法区别在什么地方,为什么同样的方法直接调用的时候不行,反射调用反而可以。
直接调用的时候api28的时候可以,29不可以,测试机是8.1,下面是示例代码:感觉好有意思,确认两个问题哈: 1. 反射的代码就是常规反射吧,没有走支持hidden api的代码吧? 2. 反射的调用在28,29都没问题,而API调用在28可以,29报错,报错是NoSuchMe ...查看更多
感觉好有意思,确认两个问题哈: 1. 反射的代码就是常规反射吧,没有走支持hidden api的代码吧? 2. 反射的调用在28,29都没问题,而API调用在28可以,29报错,报错是NoSuchMethodError?
1.或许不是认为的常规反射吧,是com.android.internal.widget.LockPatternUtils#saveLockPassword, 在https://developer.an ...查看更多
1.或许不是认为的常规反射吧,是com.android.internal.widget.LockPatternUtils#saveLockPassword, 在https://developer.android.google.cn/distribute/best-practices/develop/restrictions-non-sdk-interfaces?hl=tr&authuser=0中hiddenapi-flags.csv文件里面是黑名单 2.测试机是8.1,也就是api27,编译使用的是28,都正常运行,使用29的话,反射调用正常,直接调用崩溃。错误是: java.lang.NoSuchMethodError: No virtual method saveLockPassword(Ljava/lang/String;Ljava/lang/String;II)Z in class Lcom/android/internal/widget/LockPatternUtils; or its super classes (declaration of 'com.android.internal.widget.LockPatternUtils' appears in /system/framework/framework.jar!classes2.dex)
不知道我上面表达清楚了没有,没说明白的话,我录了个视频,https://github.com/Reginer/File/raw/master/%E6%8F%90%E9%97%AE%E8%AF%B4%E ...查看更多
不知道我上面表达清楚了没有,没说明白的话,我录了个视频,https://github.com/Reginer/File/raw/master/%E6%8F%90%E9%97%AE%E8%AF%B4%E6%98%8E.zip 传在github上,下载不了的话,私信我直接发文件
查看源码可知,8.1/9.0中该方法的返回类型为void,10.0中改为了boolean,这会影响方法签名导致找不到对应的方法
没听明白, lockPatternUtils.saveLockPassword用29来编译,怎么能调用成功
好像突然了解了,lockPatternUtils.saveLockPassword 29编译的是Boolean方法,8.1的设备对应方法是void,所以提示找不到方法 ...查看更多
好像突然了解了,lockPatternUtils.saveLockPassword 29编译的是Boolean方法,8.1的设备对应方法是void,所以提示找不到方法
哈哈,看样子解决了~
RecyclerView.Adapter setHasStableIds(true) 在什么情况下/什么场景/怎样的数据会有问题,能举个例子吗
public long getItemId(int position) { return position;}为什么 hasStableIds 默认是 false 而不是 true已提问。
布局性能方面:
实现同样的圆角背景卡片 1.通过cardView实现 2.通过给布局设置shape背景实现 哪种方式性能更高呢?jit,oat,aot,art 这些关键词区别
每个问题,没人回答的能不能来一个官方回答
目前没有没人回答的问题,官方也是人呀,不一定比回答者回答的好。
小缘可能会迟到,但永远不会缺席
接口与实现的隔离,如何设计易用,健壮,可拓展的基础隔离库,例如站长的okhttputils,若切换到Retrofit即做到无缝切换也能调用如OkHttp简洁丝滑。
线程请求数据等待3秒,收到数据立马响应并进行ui操作,3秒之后提示请求超时。
想知道我这样写有没有啥问题,有没有更好的办法Android获取通话记录在双卡机型上有什么办法判断该条通话记录是属于哪张卡的吗?
有在TV上用过bugly热修复的同学吗?手机和模拟器都能下发成功,也能修复bug生效,但是TV和盒子上一直运行失败???提示下发成功,就是没有生效~~
invalidate方法和requestLayout方法的区别?
我想 debug androidx 下面的
ViewPager
模块的代码,现在是把 androidx 下面的ViewPager
代码按照原来的目录放在一个 module 里面依赖,期望地是,在这个module里面打印的日志可以出来,以及点击主工程的ViewPager
可以直接跳转到这个 module 里面,但是实际上日志也打不出来,跳转还是跳转到 external libraries 的依赖里面去了。其实,就是想让自己的这个 module 替代依赖的ViewPager
源码,请问有没有什么解决办法?自己尝试的办法是:
但是,不起作用。
发现自己 exclude 部分写错了,下面这样是好的: ```gradle api ('androidx.appcompat:appcompat:1.2.0') { exclude group ...查看更多
发现自己 exclude 部分写错了,下面这样是好的: ```gradle api ('androidx.appcompat:appcompat:1.2.0') { exclude group:'androidx.viewpager',module:"viewpager" } api ('com.google.android.material:material:1.2.1') { exclude group:'androidx.viewpager',module:"viewpager" } ```
Android如何判断进程是开机之后的第一次启动??
在8.0系统启动Service需要使用startForegroundService启动并在Service中调用startForeground来显示一个不可删除的通知,否则将会报
Context.startForegroundService() did not then call Service.startForeground()
错误,但是在很多华为、OPPO手机上无效,求解SurfaceFlinger进程为什么不是通过Zygote进程的fork创建,而是由init进程创建?
怎么在线程里执行一行代码?平时直接new个Thread,专业的写法是什么
每日一问 | 当Unsafe遇上final,超神奇的事情发生了?
先来看一段代码:
问题来了:
1. Test.a
能被替换吗?2. Test.
a
能被替换成B对象的实例吗?3. 如果问题2成立,在成功替换对象之后,调用Test.a.
selfIntroduction
方法,返回的是什么? 为什么会这样?把代码稍微改一下:
4. 在成功替换对象之后,调用Test.a.
selfIntroduction
方法,返回的是什么? 为什么?再把代码改一下:
5. 在成功替换对象之后,调用Test.a.
selfIntroduction
方法,会报错吗? 为什么?继续改一下代码:
6. 在成功替换对象之后,调用Test.a.
selfIntroduction
方法,会报错吗? 如果不会报错,返回值是什么? 为什么会这样?再改一次代码吧:
7. 在成功替换对象之后,调用Test.a.
selfIntroduction
方法,会报错吗? 为什么?属性动画repeatMode = ValueAnimator.REVERSE做重复动画,为什么有时animatedValue无法返回设置的终点值?使用的插值器是AccelerateInterpolator
想请教个问题,关于Android10作用域的
Android10开了作用域分区存储,我们app原本有一个缓存文件夹是放在SD卡上的,这样用户卸载了,重装的时候,数据可以还原回来。到Android10,沙盒机制,如果放到沙盒里面,用户数据肯定还原不回,知道Android10还可以配置“android:requestLegacyExternalStorage="true"”,打开兼容模式,这样还是可以继续用之前的。但公司要求必须适配... 没办法,知道除了沙盒,可以存放数据在公共目录下(图片、视频、音频、下载这些),尝试了一圈,应用自身的可以正常增删改查,但是有个坑爹的问题,如果用户卸载了应用,重装安装,之前的缓存文件就没有访问权限了,要访问,需要申请“READ_MEDIA_IMAGES”之类的权限,会弹出到前台,等待用户授权,我们只是为了缓存用户数据,这样感觉侵入性很大。而且这样适配下来,如果用户不授权的话,感觉不如直接缓存在内部了,sp之类,没有存储在外置SD卡的补充。比如在下载目录缓存了一份文件“cache.txt”,用户卸载重装之后,对“cache.txt”这个文件没有了访问权,读取不出里面的缓存数据 (下载目录还没有相关的请求权限,必须使用系统的选择器...) 所以主要是几个点: 1、最主要的需求点,是希望在Android10上面,用户卸载重装了,不需要用户另外授权,可以正常读取缓存数据,和Android10之前,数据存储在SD卡上一致。这点可不可行? 2、如果可行,具体应该选择哪个公共目录 3、怎么进行实现?给出的解决方案可能不是你想要的,但是是这种问题的可行性解决方案,如果你的app只是个普通应用的话。 谷歌之所以增加这个限制,就是为了杜绝类似你的这种想法。 一种解决办法是,将想重装后直接读取的数据传到 ...查看更多
给出的解决方案可能不是你想要的,但是是这种问题的可行性解决方案,如果你的app只是个普通应用的话。 谷歌之所以增加这个限制,就是为了杜绝类似你的这种想法。 一种解决办法是,将想重装后直接读取的数据传到服务器,重装之后同步下来
这种方法是一直方案,只是可行性可能不是很大。重装之后,服务器同步下来,这有个前提,服务器必须可以辨识出来用户的设备,知道它是谁。这种应该就必须结合用户机制之类的来进行,不然在Android10已经很难 ...查看更多
这种方法是一直方案,只是可行性可能不是很大。重装之后,服务器同步下来,这有个前提,服务器必须可以辨识出来用户的设备,知道它是谁。这种应该就必须结合用户机制之类的来进行,不然在Android10已经很难标识出设备了
布局xml文件中,View的
layout_height
和layout_width
在何处被解析?如何监听一个activity 是否被用户关闭( 例如: 手动finish 方法),而非系统调度关闭;
主要难点:
Activity.finished
,有点关系,测试了几次值应该是指的是否用户关闭, 实力和精力有限,这块源码没有深挖, 忘有经验的同学分享下)之前想到一个简单但是挺好玩的问题:
大家都知道的,在java中,异常分为两类,一类叫Checked Exception,一类叫Unchecked Exception;但是如下代码可无视checked exception限制强行抛出异常:它的原理是什么?
这个问题没有看明白~~
比如throw new IOException(),一般情况下需要在方法上加throws IOException或者加try-catch捕获住,但是使用我这个throwNoCheck就不需要这些,可以 ...查看更多
比如throw new IOException(),一般情况下需要在方法上加throws IOException或者加try-catch捕获住,但是使用我这个throwNoCheck就不需要这些,可以像RuntimeException一样直接抛出
在当前页面调用上一个页面里的ListView的smothScrolltoPosition滚动到指定位置,为什么等到我返回上个页面后才执行滚动效果,这背后是什么原理?延伸出来,如果我在当前页面操作了上个页面的一个动画,那么会怎么表现呢?
能不能系统的讲一下Android是怎么调度允许的。比如说启动一个activity的大致流程,系统做了什么?不需要太详细,有一个主要的流程就可以
若干个问答之间有衔接性,组成一个知识点。
考虑出api吗?想在app上看问答。或者网页试配下手机端。
如何才能让动画更流畅?我遇到的问题是,我想在一个平移动画上加入缩放动画(不是同一个View),都是通过不断修改属性然后requestLayout来实现动画,但这样动画不流畅,请问怎样才能让多个动画流畅运行不互相影响呢?
我怎么发起提问?
android 中还有哪些好用的辅助类,例如ViewDragHelper这样的
建议来点性能优化方向的探讨。
emmmm.... 问题挺多的。先这样。
自定义view如何计算高度(搞好包裹所绘制的内容)
在 Android 的事件传递机制中, 假如一个页面有大量的控件(比如100个),如何快速查找到当前消费事件的 的 控件的? 又如何快速查找控件会消费事件? Google 是如何设计的?