自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android Binder进程间通讯机制

什么是Binder?Binder是Android系统中进程间通讯(IPC)的一种方式,也是Android系统中最重要的特性之一。Android中的四大组件Activity、Service、Broadcast、ContentProvider,不同的App等都运行在不同的进程中,它是这些进程间通信的桥梁。正如其名“粘合剂”一样,它把系统中各个组件粘合到了一起,是各个组件的桥梁。Binder架构Binder通信采用C/S架构,从组件视角来说,包含Client、Server、ServiceMana.

2022-04-13 15:13:14 788

原创 Zygote进程和system_server进程

Zygote进程Zygote进程孵化了所有的Android应用进程,是Android Framework的基础,该进程的启动也标志着Framework框架初始化启动的开始。Zygote服务进程的主要功能:注册底层功能的JNI函数到虚拟机 预加载Java类和资源 fork并启动system_server核心进程 作为守护进程监听处理“孵化新进程”的请求当Zygote进程启动后,便会到framework/base/cmds/app_process/App_main.cpp文件的main()方

2022-04-13 10:49:44 3035

原创 AMS,PMS,WMS等简单介绍

其实所谓的AMS,PMS,WMS等都是运行在system_server这个进程中的线程。sleep是Thread类的静态方法,谁调用谁去睡觉。sleep是占用CPU去睡觉,而wait是放弃CPU去睡觉。》》》》》》》》AMS》》》》》》》》》一、ActivityManagerService提供的主要功能:(1)统一调度各应用程序的Activity(2)内存管理(3)进程管理二、启动一个Activity的方式有以下几种:(1)在应用程序中调用startActivity启动指定的

2022-04-07 10:47:21 1854

原创 Android学习:java.lang.IllegalArgumentException: Unknown URL content:…闪退问题

从《第一行代码:Android 第三版》中,复刻了ProviderTest程序,向DatabaseTest程序的ContentProvider写入数据的时候,遇到按下按钮直接闪退的问题。查看Logcat,抛出异常:java.lang.IllegalArgumentException: Unknown URL content:Failed to find provider info for com.example.databasetest.provider仔细检查确定没有拼写错误,一番搜索..

2022-03-18 18:10:43 3555

原创 Android数据存储全方案——持久化技术

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。持久化技术被广泛应用于各种程序设计的领域当中,而本次要探讨的自然是Android中的数据持久化技术。Android系统中主要提供了3种方式用于简单地实现数据持久化功能,即文件存储,SharedPreferences存储以及数据库存...

2022-03-17 14:39:11 4005

原创 Android——BUG:dbname is empty or not defined in litepal.xml file, or your litepal.xml file

BUG:Caused by: org.litepal.exceptions.InvalidAttributesException: dbname is empty or not defined in litepal.xml file, or your litepal.xml file is missing.在做练习时遇到的一个BUG,使用LitePal的时候发现真机闪退,看错误应该是litepal.xml文件出错,经排查:不是assets文件夹写错文件名或者文件夹位置不对; 不是dbname没写或

2022-03-17 11:23:01 2557 1

原创 安卓ADB /system/bin/sh: su: inaccessible or not found

进入模拟器shell后,报/system/bin/sh: su: inaccessible or not found是因为下载的模拟器是带Google play版的,没有root用户需下载带AndroidApi版本的如图: 创建设备,再试一试,成功

2022-03-16 15:16:05 16371

原创 Android组件总结——广播接收器(Broadcast Receiver)

Android中广播主要可以分为两中类型:标准广播和有序广播。 标准广播(Normal broadcast)是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在统一时刻接收到这条广播消息,因此他们之间没有任何先后顺序而言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。 有序广播(Ordered broadcast)则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完...

2022-03-15 15:36:34 1174

原创 Android——碎片的生命周期:实践

当碎片第一次被加载到屏幕上时,会依次执行onAttach(),onCreate(),onCreateView(),onActivityCreated(),onStart()和onResume()方法。 当点击按钮切换到下一张图片时,第二张将第一张图片覆盖掉,此时用户看不到第一张图片,第一个碎片进入了停止状态。因此onPause(),onStop()和onDestroyView()方法会得到执行。当然如果在替换的时候没有调用addTobackStack()方法,此时第一个碎...

2022-03-10 16:17:03 872

原创 Android——碎片的生命周期

碎片(Fragmeng)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间。 我们可以使用<fragment>标签在布局中添加碎片,同时还要通过android:name属性来显式知名要添加的碎片类名,注意一定要将类的包名也加上。 FragmentTransaction种提供了一个addTobackStack()方法,可以用于将一个事务添加到返回栈中,它可以接受一个名字用于描述返回栈的状态,一般传入null即可。...

2022-03-10 15:14:10 1289

原创 Android——UI界面——4种基本布局

线性布局 LinearLayout又称作线性布局,是一种非常常用的布局,这个布局会将他所包含的控件在线性方向上依次排列。 注意:如果LinearLayout的排列方向是horizontal,内部的控件就绝对不能将宽度指定为match_parent,因为这样的话,单独一个控件就会将整个水平方向占满,其他的控件就没有可放置的位置了。同样的道理,如果LinearLayout的排列方向是vertical,内部的控件就不能将高度设置为match_parent。...

2022-03-09 16:09:16 2014

原创 Android——UI界面——常用控件总结

TextView可以说是Android中最简单的一个控件了,主要用于在界面上显示一段文本信息。可以使用android:gravity来指定文字的对齐方式,可选值有top,bottom,left,right,center等,可以使用“|”来同时指定多个值,如果指定为center,效果等同于center_vertical|center_horizontal ,表示文字在垂直和水平方向都居中对齐。通过android:textSize 属性可以指定文字的大小,通过android:textCo...

2022-03-09 15:13:31 1553

原创 Android之vertical和horizontal的区别

当android:orientation=”vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。当 android:orientation=”horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。...

2022-03-09 10:13:41 2020

原创 Android Studio中match_parent和wrap_content的区别

Android中所有的控件都具有这两个属性,可选值有3种:match_parent, fill_parent 和 wrap_content 其中match_parent和fill_parent的意义相同,但官方更推荐match_parent区别: match_parent表示让当前控件的大小和父布局的大小一样,也就是让父布局来决定当前控件的大小 wrap_content表示让当前的控件的大小能够刚好包含里面的内容,也就是由控件来...

2022-03-08 16:23:01 2230

原创 Android活动总结五:启动模式

活动的启动模式一共有四种:standard,singltTop,singleTask,singleInstance,可以在AndroidManifest中通过给<activity>标签指定android:launchMode属性来选择启动模式。 一、standardstandard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。在Android中,是只用返回栈来管理活动的,在standard模式下,每当启动一个新的活动,它就会在返回栈...

2022-03-07 16:07:28 234

原创 活动的生命周期——实践

首先,创建了一个主活动MainActivity,然后创建了两个子活动,NormalActivity和DialogActivity,布局中就使用了非常简单的一个TextView,用于显示一行文字。最主要的区别就是:这两个活动一个是普通的活动,一个是对话框式的活动。主要是在AndroidManifest.xml中修改<activity>标签:<activity android:name=".NormalActivity"></activity><acti.

2022-03-07 14:06:36 268

原创 活动的生命周期

其实Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作为返回栈(Back Task)。栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish() 方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。 活动状态每个活动在其生命周期中最多肯会有4中状态 ...

2022-03-07 11:21:03 322

原创 Android活动总结四:使用Intent在活动之间穿梭

Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。 Intent大致可以分为两种:显示Intent和隐式Intent。 第一种:显示IntentIntent有多个构造函数的重载,其中一个是Intent(Context packageContext, Class<?>cls) 。...

2022-03-07 10:54:56 246

原创 Android活动总结三:在活动中使用Menu

首先在res目录下新建一个menu文件夹,右击res目录→New→Directory,输入文件夹名menu,点击OK。接着在这个文件夹下再新建一个名叫main的菜单文件,右击menu文件夹→New→Menu resource file。文件名输入main。点击完成!同时编写以下代码:<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item ...

2022-03-07 10:00:23 138

原创 Android活动总结二:在活动中使用Toast

Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); Button button1 = (Button) findV.

2022-03-07 09:52:55 170

原创 Android活动总结一:了解活动

1.在创建了第一个活动之后,你需要知道,项目中的任何活动都应该重写Activity的onCreate()方法,public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}可以看到,onCreate方法非...

2022-03-07 09:44:32 81

原创 GOF设计模式三:适配器模式

一、什么是适配器模式? 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。/** *被适配的类 * (相当于例子中的,PS/2键盘) */public class Adaptee { public void request(){ System.out.println("可以完成客户需要的功能!"); }}public interface Target { ...

2021-09-13 16:35:13 128

原创 MyBatis底层源码分析:

1.1 Configuration.xml该配置文件是MyBatis的全局配置文件,在这个文件种可以配置诸多项目。常用的内容是别名设置,拦截器设置等。1.1.1 Properties(属性)将数据库连接参数单独配置在 db.properties 中,放在类路径下。这样只需要在 SqlMapConfig.xml 中加载 db.properties 的属性值。这样SqlMapConfig.xml 中就不需要对数 据库连接参数硬编码。 将数据库...

2021-09-07 09:15:45 138

原创 GOF设计模式二:工厂模式

工厂模式: 实现了创建者和调用者的分离。 详细分类: • 简单工厂模式 • 工厂方法模式 • 抽象工厂模式 • 面向对象设计的基本原则: – OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开 放,对修改关闭。 DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程, 不要针对实现编程。 LoD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避.

2021-09-06 21:39:15 89

原创 GOF设计模式一:五种单例模式

一、主要饿汉式:线程安全,调用效率高。但是不能延时加载懒汉式:线程安全,调用效率低。但是可以延时加载二、其他双重检测锁:由于JVM底层内部模型的原因,偶尔会出现问题,不建议使用静态内部类:线程安全,调用效率高。可以延时加载枚举式:线程安全,调用效率高,不饿能延时加载饿汉式: 饿汉式单例模式代码中,static变量会在类装载时初始化,此时也不会涉及多个对象线程访问该对象的问题。虚拟机保证只会装载一次该类。肯定不会发生并发访问的问题 缺点: ...

2021-09-06 21:21:23 173

原创 Servlet底层源码理解

如果一个类继承了HttpServlet,那么他的实现过程是怎样的?我的理解:一个类继承了HttpServlet类之后,首先会去调用实现父类的service(ServletRequestreq,ServletResponseres)方法通过参数的向下转型,然后调用重载的service(HttpservletRequest,HttpServletResponse)方法,目的是减少与http协议之间产生的耦合性,然后在servce方法中进行判断提交方式的Do ...

2021-09-06 17:24:30 236

原创 No.1 数组的反转

emmm..... ,作为本人第一篇博客的话,还是有一些话想对自己说,学无止境,干一行爱一行,我希望我能在程序员的路上每天都有很多新的挑战,让我的生活不再无聊,热爱生活的每一天,希望能够进入自己心目中最好的BAT去学习,认识更多志同道合的朋友,一起挑战新的东西。加油!小梅你不能放弃!!!一个简简单单的数组反转,既考察了我们的基础,对数组的认识,又更好的让我们了解到了时间复杂度和空间复杂度。我当初在做这道题的时候想到了两种解法,但都是数组的方法。方法一:引入一个外部数组变量,用于保存...

2021-09-04 21:09:14 252

Linux系统快速实战.pdf

常用的Linux命令,linux安装教程

2021-09-07

空空如也

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

TA关注的人

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