自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Java线程的中断状态

  一般我们在使用线程的过程中会遇到中断一个线程的请求,java中有stop、suspend等方法,但被认为是不完全的,所以弃用了,现在在Java中可以通过iterrupt来请求中断线程。  在Java中主要通过三个方法来进行中断线程操作:  (1)interrupt(),进行线程中断操作,将线程中的中断标志位置位,置为true;  (2)interrupted(),对线程中断标识符进行复位,重新置为false;  (3)isInterrupt(),检查中断标识符的状态,ture还是false; 

2021-02-05 17:55:17 659 1

原创 Messager与AIDL的区别

1.Messenger的本质也是AIDL,只不过Messenger对其进行了封装,在操作的时候不用再写.aidl文件。因为在使用Messenger的时候不用写aidl文件,所以使用Messenger是非常简单方便的,但是因为Messenger是对AIDL的封装,所以在底层进程通信上,两者的效率应该是差不多的。2.在service端,Messenger处理client的请求是单线程的,AIDL是多线程的。AIDL当service端收到一个请求时,就会启动一个线程,不是主线程,对其进行处理,而Messen

2021-02-05 17:54:14 521

原创 进程(procress)和线程(Thread)的简单解释

进程(procress)和线程(Thread)是操作系统的基本概念,看到一篇文章比较具体的描述了进程与线程的关系,计算机的核心是CPU,它承担了计算机的所有计算工作,就像一座工厂,在时刻运行。进程就像工厂里一个个车间工作室,假如工厂的电力是有限的,一次只能提供一个车间工作,这个车间在工作时,其他的车间必须等待,进程就像工厂的车间,CPU就是工厂,单个cpu每次只能进行一个任务,只能有一个进程处于运行状态,其他进程处于非运行状态。在每一个车间中,会有许多工人一起协同工作,而线程(Thread)就相当于这

2021-02-05 17:52:52 753

原创 Android 百度地图开发 全景图SDK的使用

参考了百度地图sdk官方文档,和博客https://blog.csdn.net/lonely0512/article/details/84821288我的百度SDK是现在最新的5.3.0版本,AndroidSDK 7.1.1 好了 不说废话 直接上代码…1.在AndroidMaifest.xml文件中加入权限<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-perm

2021-02-05 17:51:03 771 1

原创 利用Handler在不是内部类的BroadcastReceiver中更新UI

  我们知道Receiver也是在主线程中运行的,如果将Receiver写成activity的内部类,可以直接在 onReceive()方法中获得主线程的UI控件,对UI进行刷新,但是如果我们将Receiver写成单独的一个类,那这样就可能比较麻烦了,因为我们获取activity中的UI控件就变得困难。  就算我们利用LayoutInflater.from©.inflate(R.layout.mainframe,null)方法来获得布局和控件,但是这不是取得你的Context中的控件,而是将mainfra

2021-02-05 17:48:52 259

原创 特许权限许可名单学习

特许权限许可名单客户提了一个需求,预制一个launcher apk到系统应用,不可删除,且应用能够通过google play store升级。最开始选择就预制到system/app目录下面,这个比较简单,在应用目录下的Android.mk文件中通过 LOCAL_PRIVILEGED_MODULE := true来进行控制,如果不设置或者设置为false,安装位置为system/app;如果设置为true,安装位置为system/priv-app。应用要能够通过应用商店进行升级,这个就必须要使用应用自

2021-02-05 17:45:49 309

原创 JetPack MVVM 初探

JetPack MVVMgoogle为了帮助开发者更好的,更规范的进行开发,将各种能够帮助开发的套件,组件,整合到了一起。这就是JetPack,所以JetPack里面不仅包含最新的的东西,只要是对开发有帮助的库都在里面。MVVM就是基于JetPack库进行开发的一套架构,相当于MVC的进化版。因为Android的开发比较特殊,在activity或fragment里面,既要处理部分视图关系,也要进行业务逻辑。所以像MVC那种,view和controller分开,视图和业务逻辑分开处理的开发模式,就不大适合

2021-02-05 17:43:58 326 3

原创 Settings某些菜单项的定义

Settings某些菜单项的定义在Settings里面,正常的二级菜单或者三级菜单是直接在当前界面的布局文件里面定义的,所以可以找到。但是某个二级或者三级菜单里面的preference,在本菜单的布局文件里面没有定义,被定义在Androidmanifest.xml中,它又是如何匹配到二级,或三级菜单里面去的呢。比如,在Connected devices–>Connection preferences–>Cast,它就是定义到 Androidmanifest里面。<activity

2021-02-05 17:42:20 266

原创 Setting学习(八)-搜索框(搜索过程)

从前面已经知道搜索界面的布局是线性布局,上面是一个searchview,而下面是一个recycleview显示搜索的结果,在搜索过程中,会从数据库里匹配,点击筛选结果,根据ClassName启动对应的界面:\packages\apps\settings\src\com\android\settings\search\SearchFragment.javaonCreate()方法:在onCr...

2020-02-14 16:23:32 536

原创 Setting学习(七)-搜索框(实现原理)

从上面已经知道搜索框布局的具体加载是在SearchFragment中进行的,下面就来看看SearchFragment的onCreate方法:\packages\apps\settings\src\com\android\settings\search\SearchFragment.java在onCreate方法中调用了SearchFeatureProvider的updateIndexAsyn...

2020-02-14 16:09:00 964

原创 Setting学习(六)-搜索框(界面)

要学习搜索栏首先要看一下搜索栏的布局是怎样实现的,首先来看看主界面的布局文件:\packages\apps\settings\res\layout\Settings_main_dashboard.xml可以看到在主界面的搜索框是一个卡片式布局CardView接下来再看SettingsActivity.java的onCreate()方法,之前也提到过主界面继承了SettingsActivit...

2020-02-14 15:45:33 595

原创 Setting学习(五)-默认设置值加载及修改

我们有些需求需要修改setting的默认值来达到目的,这涉及SettingsProvider,(framework/base/packages/SetingsProvider)它主要是做什么的呢,从这个名字也可以看出来,SettingsProvider继承了contentProvider,扮演了数据共享功能的角色,SettingsProvider中有一个数据库,这个数据库是对外开放的,用户在修改系...

2020-02-14 15:39:01 3047 1

原创 Setting学习(四)-数据加载之二级菜单

二级菜单是以动态加载和静态xml文件结合的方式进行加载的。以网络(network)为例可以看到,它对应的fragment是NetworkDashboardFragment.java,他继承了DashboardFragment而往上追踪溯源,最后都是继承的PreferenceFragmentPreferenceFragment是通过xml文件来进行加载的,它是所有二级界面的基类。首先来...

2020-02-14 15:09:51 1590 1

原创 Setting学习(三)-数据加载之一级菜单

Setting模块的界面渲染的时候说过,setting的主界面(一级菜单),是通过DashboardSummary来加载的,DashboardSmmary作为设置主界面的顶部容器,自然与数据的加载也有关。DashboardSummary是Fragment的子类,所以也要执行onCreate()方法:可以看到在onCreate()方法里面有两个数据提供者mDashboardFeatureProv...

2020-02-03 17:41:32 834

原创 Setting学习(二)-静态界面的渲染

可以看到在SettingsActivity的onCreate方法中有getMetaData()方法ai.metaData.getString(META_DATA_KEY_FRAGMENT_CLASS);这个函数的主要作用就是从Activity标签中获取meta-data标签中key为com.android.settings.FRAGMENT_CLASS的值,并将其赋值给mFragmentCl...

2020-02-03 15:24:14 461

原创 Setting学习(一)-静态界面

Setting学习(一)-静态界面设置是整个android系统的重要应用,涉及的都是系统功能Setting模块的主要路径 :/packages/apps/Settings/Setting模块里的activity可能一看和其他的activity有不同,但是其实原理都是一样的,设置为了更好的区分和获取信息,在Androidmanifest.xml中添加了许多属性从Androidmanifest...

2020-02-02 18:53:35 961

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除