- 博客(15)
- 收藏
- 关注
原创 message消息中的barrier消息
先点击发送barrier消息,然后点击移除barrier消息,发现按钮状态如图所示,button状态一直是pressed的状态,并且没有打印“移除屏障”2、当有barrier消息,执行到barrier消息时,不再处理同步消息,会去寻找队列中的异步消息并处理。1、当消息队列中,没有同步分隔栏(barrier消息),同步消息和异步消息没有区别,按顺序处理。看上面两篇参考文章,可了解的比较清楚,下面主要记录下自己遇到的情况的分析,方便以后查阅。同步分割栏,同步消息,异步消息。
2024-09-10 14:18:28
274
原创 android键盘处理机制,初始化流程
在android_view_InputChannel_nativeOpenInputChannelPair中,将它们封装成一个Java层的Server端InputChannel,一个Java层的Client端InputChannel,并返回给调用者。在InputTransport.cpp的openInputChannelPair方法中创建了一个C++层的Server端InputChannel和一个C++层的Client端InputChannel。3、InputDispatcher的初始化。
2024-08-28 11:34:10
807
原创 protected-broadcast广播
如果isCallerSystem为true,则会调用如下代码,方法checkBroadcastFromSystem检查是否为protected-broadcast,如果不是,则打印“Sending non-protected broadcast”代码在frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java 中,2中所说的异常对应的代码如下。对于isCallerSystem的判断如下。
2024-02-29 15:46:50
742
原创 android控件状态值保存的问题
Activity.java --onSaveInstanceStatePhoneWindow.java --saveHierarchyStateView.java --saveHierarchyState--dispatchSaveInstanceStateActivity.java --onRestoreInstanceStatePhoneWindow.java --restoreHierarchyStateView.java --restoreHierarchyState
2024-01-18 15:12:26
423
1
原创 子线程不能UI绘制,但可以弹toast
就可以正常弹toast了,这是因为Toast.java中显示toast是在handleMessage中处理的,不执行Looper.loop();Looper.loop为死循环,阻塞,上面的方法只能该线程执行时弹一次toast,如果要多次弹toast,或某个条件达到让弹toast,最好把Toast.makeText()放在handleMessage中。原因是相同的,需要该线程有Looper。
2023-12-06 16:09:10
474
1
原创 thread的interrupt不生效
参考文档:https://blog.youkuaiyun.com/qq_18431401/article/details/108808710。在实现需要线程休眠几秒中,不断循环,在其他地方通过interrupt 设置中断,发现interrupt不生效。interrupted最终调用到thread.cc中的Interrupted方法,这里会重置值为false。所以后面再调用isInterrupted,获取的值就是false了。原因是sleep()方法中调用了interrupted()
2023-09-18 15:59:05
502
原创 Activity中调用showDialog(int id)不重新创建的问题
在自己的Activity中调用showDialog(int id),覆写了onCreateDialog方法,有两处地方调用showDialog(int id)方法,去赋值了不同的message,用于diaolog中显示出来。看Activity.java中的代码,发现了问题所在,在showDialog方法中,会从 mManagedDialogs取出对应的id的dialog,看是否为null,为空则调用createDialog,否则不调用createDialog。
2023-08-28 11:50:31
127
1
原创 anrwatchdog的使用
下载地址:https://github.com/SalomonBrys/ANR-WatchDog#with-gradle–android-studio可以只下载jar包,放在libs下import com.github.anrwatchdog.ANRWatchDog;主线程中使用new ANRWatchDog().start(); 默认检测5s内没响应,就为anr可以修改时长new ANRWatchDog(10000).start();更多使用方法查看上面的链接,写的挺详细的...
2020-12-12 09:58:40
831
原创 ndk开发中遇到的问题
参考:1、书籍《Android开发艺术探索》第14章2、https://blog.youkuaiyun.com/u010356768/article/details/91414997按照书籍《Android开发艺术探索》第14章中NDK开发流程,写好代码编译,手机中装上APK,出现闪退的问题,抓取log,是找不到so库,是因为Application.mk中写的是armeabi,这样只包含armeabi类型的so库,把armeabi改成all,成功。遇到的另一个问题是,打算通过AndroidStudio来自动编译产
2020-06-13 18:22:18
180
原创 内部类形式的BroadcastReceiver
今天写了内部类形式的BroadcastReceiver,发现静态注册时,接收不到广播,就算写成public static的形式也不行。动态注册时,可以接收广播。网上找了下,发现下面的资料,内容如下,链接:https://zhidao.baidu.com/question/1447980236391762140.html今天见网友发了这样一个小测试,就是测试如下四种注册Receiver的方法是不...
2019-11-10 22:59:42
316
原创 PRE_BOOT_COMPLETED和BOOT_COMPLETED区别
Intent.ACTION_PRE_BOOT_COMPLETED=android.intent.action.PRE_BOOT_COMPLETEDIntent.ACTION_BOOT_COMPLETED=android.intent.action.BOOT_COMPLETEDPRE_BOOT_COMPLETED在烧完版本启动、恢复出厂设置后,会有这个广播,适合手机需要进行一次设置相关参数等时使...
2019-11-09 18:53:30
3186
原创 activity启动模式
activity启动模式有四种1、standard这个是活动启动的默认模式,系统不会管这个活动在栈中是否存在,每次启动都会创建一个新的实例。Intent intentSelf= new Intent(MainActivity.this, MainActivity.class);startActivity(intentSelf);如上面的自己启动自己,还是会创建的。2、singleTop.........
2019-11-06 23:32:24
366
原创 activity在AndroidManifest文件中定义了action,必须同时定义category
工作中看代码多,写代码少,所以有的细节并不很清楚今天写个代码,发现在AndroidManifest.xml中的Activity中定义了action,另一个activity通过隐式启动这个activity,却启动不了,最终发现是需要同时定义category...
2019-10-30 23:57:53
478
原创 JSON数据转换成XMl,并写入XML文件
需要把JSON数据转换成XMl,并写入XML文件,格式如:但从网上查找的方法都是如下这种:xmlSerializer.startTag(null, “body”);xmlSerializer.text(sms.getBody());xmlSerializer.endTag(null, “body”);用这种方法写出来的是: carrier=“Airtel-MMS” mcc=“460”...
2019-10-14 09:19:03
1196
原创 android编译报错,错误:程序包com.android.internal.R不存在
第一次尝试写博客,记录今天遇到的一个坑。因为新加的类使用了com.android.internal.R的资源,编译报错,错误:程序包com.android.internal.R不存在。最终发现是sdk_version:"system_current"的问题,注释掉这行就可以了...
2019-09-16 21:09:55
2506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人