自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @Android程序员:到底是Android不行了,学习Android开发的步骤,

1、启动模式以及使用场景?2、onNewIntent()和 onConfigurationChanged()3、onSaveInstanceState()和 onRestoreInstanceState()4、Activity 到底是如何启动的Fragment1、Fragment 生命周期和 Activity 对比2、Fragment 之间如何进行通信3、Fragment 的 startActivityForResult4、Fragment 重叠问题…Service1、进.

2021-12-31 10:03:43 388

原创 Android 可控制概率家务转盘,三幅图给你弄懂EventBus核心原理,

/** 监听动画状态的监听器 */private AnimationListener animationListener = new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(

2021-12-30 12:02:01 399

原创 Android 友盟社会化组件-分享实现,androidsdk开发封装

怎么使用友盟SDK?使用友盟SDK,跟其他开放平台一样,需要自己创建一个应用,得到属于自己的APP_key,具体如何操作你自己到友盟官网去探索。关于友盟SDK,分为开发组件和统计分析两种,开发组件又分为社会化组件、用户反馈、自动更新三种;统计分析分为统计分析和社会行为分析两种。本篇博客使用的是社会化组件的SDK,实现的是分享的功能。实现步骤:1. 导入必须的jar包umeng_social_sdk.jar一定先要导入,下面你需要哪个平台就导入哪个平台相应的jar包| 平台 | jar文件 ||

2021-12-30 12:01:06 609

原创 Android 代码混淆语法讲解及常用模板,移动开发者大会2019

| … | 匹配任意长度的任意类型参数。比如void test(…)就能匹配任意void test(String a)或者是void test(int a, String b)这些方法。 |Android 混淆插件推荐及常用的混淆模板Github 上面的混淆插件Github 上有这样一个插件,AndroidProguardPlugin,他帮我们收集了常用的混淆模板,基本能满足我们的大部分需求。详情大家可以自己点击查看,这里就不教大家怎样使用了,该链接已经讲解地很清楚了。AndroidProguard

2021-12-30 12:00:11 503

原创 Android 代码优化:“这个需求很简单,flutter项目实战视频

}});}ok,做完上线step1过了一阵子,产品同学又跑过来了说:“老板的需求,我们要在首页第一次进来的时候加一个注册协议的弹框”程序员小A: “可是首页已经之前有一个弹框了,直接一起展示吗?”产品同学: “一起弹出来体验不好,那你放在A弹框之后吧!”ok,那么程序员小A寻思了一下,那应该就是这么改了:@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {checkFirstDialogIfNe

2021-12-30 11:59:15 111

原创 Android _《看完不忘系列》之Retrofit,2021Android大厂面试题来袭

赚钱 xxr;public 经纪人(赚钱 xxr) {this.xxr = xxr;}@Overridepublic void makeMoney(int income) {if (income < 1000_0000) { //控制访问System.out.println(“才” + income + “,先回去等通知吧”);} else {xxr.makeMoney(income);}}}public static void main(String[] args) {赚

2021-12-30 11:58:20 1442

原创 Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息

一、怎样获取wifi对象并进行操作=================要操作 WIFI 设备,需要先获取  Context.getSystemService(Context.WIFI_SERVICE) 获取 WifiManager 对象,并通过这个对象来管理WIFI设备。addNetwork(WifiConfiguration config) 添加一个config描述的WIFI网络,默认情况下,这个WIFI网络是DISABLE状态的。calculateSignalLevel(int rssi

2021-12-30 11:57:25 7162

原创 Android Studio真机 设置 和 错误排查,android面试复习

第二步:Android Studio设置开启Android Studio,新建一个简单的工程。选择Edit ConfigurationsDeployment Target Options 选择USB Device - 点击OK,保存更改第三步:运行程序运行程序,若出现下图,那么恭喜你,可以用真机调试。若是在Android Studio 的Event Log 中提示:Error running 'app': No target device found 那么说明无法进行真机调试,有可能是硬件

2021-12-30 11:55:34 798

原创 Android Studio Live Templates使用详解,提高敲代码的速度

其他常量,目前as只提供了整形和字符串类型常量的模板,学了后面的自定义之后你就可以定义其他类型的了,当然还有一种捷径:psf 回车即可快速补全public static final11for循环相信很多小伙伴也觉得每次都要写整个for循环好麻烦,as提供了:fori 回车,看对比图这里还有一个隐藏的模板,sout 回车 即可快速补全 System.out.printf(“”);if判断ifn 回车(推荐)inn 回车隐藏Viewgone快速在子线.

2021-12-30 11:54:39 417

原创 Android Studio APK在真机上运行的方法,flutter下拉刷新插件

Instant Run(即时运行)是android的新版本出了一个革命性的功能。新的即时运行功能可以让开发者像写html网页一样写Android原生代码,能做到一边修改代码,一边在模拟器或者实际设备上看到修改代码后的结果。但也存在着一些的问题,我们可以在Settings→Build→Instant Run:中关闭它,但是并不建议,可以通过重新Build一下解决。Build下面有很多的选项,搬运一下翻译:1. Make Project:编译Project下所有Module,一般是自上次编译后Project

2021-12-30 11:53:43 1243

原创 Android OpenGLES + Camera1 相机预览,大学生android开发项目实例

因为需要EGLTextureView里面使用的是TextureView实现,可以满足Android View的一些特性,而GLSurfaceView是SurfaceView实现,对View的一些特性是不支持的如何自定义EGLTextureView?新建类EGLTextureView复制GLSurfaceView的所有内容到EGLTextureView修改继承的类的TextureView,并实现TextureView.SurfaceTextureListener接口删除所有报错的地方修改EGLH

2021-12-29 12:57:41 204

原创 Android OOM:内存管理分析和内存泄露原因总结,架构师必备

所以Stack空间不需要很大,一般为几MB大小。**Heap空间:**使用由程序员控制,程序员可以使用malloc、new、free、delete等函数调用来操作这片地址空间。Heap为程序完成各种复杂任务提供内存空间,所以空间比较大,一般为几百MB到几GB。正是因为Heap空间由程序员管理,所以容易出现使用不当导致严重问题。2. 进程内存空间和RAM之间的关系进程的内存空间只是 虚拟内存,而程序的运行需要的是实实在在的内存,即 物理内存(RAM)。在必要时,操作系统会将程序运行中申请的

2021-12-29 12:56:23 963

原创 Android MVP模式深入实践探索(二,android课程设计总结

第三步MainActivity实现定义的View接口并调用Presenter:public class MainActivity extends Activity implements View.OnClickListener, IMainView {private TextView mUserNameText;private TextView mSexText;private LinearLayout mAdsLayout;private LinearLayout mNewsLayout;pr

2021-12-29 12:55:25 166

原创 Android ListView功能扩展,实现高性能的瀑布流布局,android开发项目实例记事本

可以看到,这是一个非常普通的 ListView,每个 ListView 的子 View 里面有一张图片,一段文字,还有一个按钮。文字的长度是随机生成的,因此每个子 View 的高度也各不相同。那么我们现在就来对 ListView 进行扩展,让它拥有瀑布流展示的能力。首先,我们打开 AbsListView 这个类,在里面添加如下所示的几个全局变量:protected int mColumnCount = 2;protected ArrayList[] mColumnViews = new ArrayL.

2021-12-29 12:54:13 585

原创 android intent打开各种格式文档方法,android实战

intent.setDataAndType(uri, “application/x-chm”);return intent;}// android获取一个用于打开文本文件的intentpublic static Intent getTextFileIntent(String param, boolean paramBoolean) {Intent intent = new Intent(“android.intent.action.VIEW”);intent.addCategory(“andro

2021-12-29 12:51:47 682

原创 Android Google Pay接入,已获千赞

if (billingResult.getResponseCode() == BillingResponseCode.OK) {// The BillingClient is ready. You can query purchases here.}}@Overridepublic void onBillingServiceDisconnected() {// Try to restart the connection on the next request to// Google Play

2021-12-29 12:50:39 570

原创 Android GC原理探究(深度好文,GitHub标星过万

GC_FOR_MALLOC: 表示是在堆上分配对象时内存不足触发的GC。GC_CONCURRENT: 当我们应用程序的堆内存达到一定量,或者可以理解为快要满的时候,系统会自动触发GC操作来释放内存。GC_EXPLICIT: 表示是应用程序调用System.gc、VMRuntime.gc接口或者收到SIGUSR1信号时触发的GC。GC_BEFORE_OOM: 表示是在准备抛OOM异常之前进行的最后努力而触发的GC。实际上,GC_FOR_MALLOC、GC_CONCURRENT和G...

2021-12-29 12:49:29 240

原创 Android Framework学习笔记(五,kotlin函数式接口

注释1调用了startActivity函数。Launcher#startActivity()private boolean startActivity(View v, Intent intent, Object tag) {intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//1try {…if (user == null || user.equals(UserHandleCompat.myUserHandle())) {StrictMode.VmP

2021-12-29 12:48:31 316

原创 Android R DisplayManagerService模块(1) 启动,android系统开发总结

a.添加了新的DisplayDevice;b.DisplayDevice状态发生变化;c.移除DisplayDevice。DisplayViewport:携带有physical display参数,用于通知IMS display信息。以上类并非所有都位于同一包下,共有一下几个位置:Package NameDirectoryDescriptionExampleandroid.hardware.displayframeworks/base/co...

2021-12-28 11:31:17 828

原创 android mmap的使用,2021年展望Android原生开发的现状

static shared_use_st *use_st = NULL;static jint throwException(JNIEnv* env, jobject clazz, const char *clsname, const char *msg){jclass cls;cls = ( *env)->FindClass(env, clsname);if(cls == NULL){return -1;}(*env)->ThrowNew(env,cls, msg);retu

2021-12-28 11:30:19 279

原创 Android FrameWork 面试整合题集,android经典项目开发实战dvd

III.减少bitmap的内存占用inSampleSize:缩放比例,在把图片载入内存之前,我们需要先计算出一个合适的缩放比例,避免不必要的大图载入。decode format:解码格式,选择ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差异。IV.减少资源图片的大小,过大的图片可以考虑分段加载内存对象的重复利用大多数对象的复用,都是利用对象池的技术。I.listview/gridview/recycleview contentview的复用II.

2021-12-28 11:28:00 186

原创 Android FlexboxLayout布局属性详解,最新手淘Android高级面试题及答案

使用项目中添加依赖dependencies {compile ‘com.google.android:flexbox:0.2.6’}如果是在RecycleView中使用则添加dependencies {compile ‘com.google.android:flexbox:0.3.0-alpha3’}Alpha版本包括RecyclerView的集成XML中添加布局<android.support.constraint.ConstraintLayout xmlns:android=

2021-12-28 11:26:42 281

原创 Android ExpandableListView折叠菜单的三层嵌套实现,kotlin语言优点特性

<?xml version="1.0" encoding="utf-8"?>我们可以通过 ExpandableListView 的默认属性来控制部分样式,这里贴上菜鸟教程的属性图片一级菜单布局文件<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android=“http://schemas.android.com/ap

2021-12-28 11:25:33 301

原创 Android abd shell dumpsys命令探究,轻松拿下offer

dumpsys diskstatsroot@zms:/ # dumpsys diskstatsdumpsys diskstatsLatency: 0ms [512B Data Write]Data-Free: 726356K / 1031064K total = 70% freeCache-Free: 122848K / 126992K total = 96% freeSystem-Free: 548480K / 1032088K total = 53% freedumpsys usagest

2021-12-28 11:23:26 967

原创 Android SDK 网络模块解析,各种风格的Android面试题进来了解一下

客户端建立连接并发送请求;服务端接受并处理请求;服务端发送应答;客户端接受并处理应答。在基于 HttpURLConnection 实现网络请求方案时,很有必要对 HttpURLConnection 有进一步的了解。HttpURLConnection 继承自 URLConnection 抽象类,URLConnection 类本身依赖于 Socket 类实现网络连接。Socket 又称做套接字,它把复杂的网络操作抽象为简单的接口供上层调用。由于 HttpURLConnection 并..

2021-12-27 11:13:20 171

原创 Android RecyclerView的简单使用,android设计模式原则

代码实现RecyclerViewActivitypublic class RecyclerViewActivity extends ActivityBase{ActivityRecyclerviewBinding recyclerviewBinding;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {s

2021-12-27 11:12:06 145

原创 Android RecyclerView 绘制流程及Recycler缓存,flutter下拉刷新组件

final int heightMode = MeasureSpec.getMode(heightSpec);//mLayout(传入的 LayoutManager)的 onMeasure 方法测量RecyclerView的宽高。mLayout.onMeasure(mRecycler, mState, widthSpec, heightSpec);//RecyclerView 的宽高被设置为&

2021-12-27 11:10:47 424

原创 android opencv NDK人脸识别和对比,Android程序员最大的悲哀是什么

/**加载人脸识别的分类器文件@param filePath*/public native void loadCascade(String filePath);#include <jni.h>#include #include “opencv2/opencv.hpp”#include “android/bitmap.h”#include “android/log.h”//使用命名空间using namespace cv;using namespace dnn

2021-12-27 11:09:49 183

原创 Android JSON基础,安卓app启动速度优化

String name = jsonObject.optString(“name”,null);int age = jsonObject.optInt(“age”,0);//日志打印结果Log.d(“json”,“解析的结果===”+“id:”+id+","+“name:”+name+","+“age:”+age);}} catch (JSONException e) {e.printStackTrace();}日志打印结果:json: 解析的结果===id:1,name:小猪,age:2

2021-12-27 11:08:37 123

原创 Android JetPack架构——结合记事本Demo一篇打通对Sqlite的增删改查结合常用jetpack架构应用

}2.编写数据仓库(Repository、AsyncTask)如果此处不引入Repository类会造成什么影响呢?为什么要引入Repository?对数据库的操作(调用Dao)逻辑将放于ViewModel中(步骤5)。使得ViewModel中代码变得杂乱引入仓库类,用于对数据库操作并对ViewModel暴露方法。让ViewModel专注于数据处理而非对数据库的调用,对ViewModel和Dao进一步解耦。什么是AsyncTask?为什么需要引入AsyncTask?一个Android 已封

2021-12-27 11:07:30 145

原创 Android Camera 内存问题剖析,android项目开发实战入门电子书

由于 native 内存分配的频率过高,获取 Java 层堆栈又比较耗时,在拦截 native 内存分配时并不适合直接频繁抓取 Java 堆栈。Native 内存不同于 Java 内存,单从拦截到的数据很难直观给出结论。通常对于内存等资源不合理使用导致的资源不足而引发的问题都很难归因,从拦截到的数据来看,CameraMetaData 所引用的内存最大,嫌疑也最大,基于此决定剖析一下这个问题初步分析分析 native 内存的分配和释放通过拦截到的堆栈可以看出,CameraMetaData 的创建堆栈.

2021-12-27 11:05:03 198

原创 Android Studio 4,字节跳动架构师讲解Android开发

新的 Android Studio 4.0 更换了全新的启动界面,最近 Google I/O 中官方发布了 Android Studio 3.5 的 beta 版,一个月之后发布了 Android Studio 3.6 beta 版,而最近的 Android Dev Summit 中为我们带来了 Android Studio 4.0 预览版,今天我们就来看一下,新的 Android Studio 4.0 为开发者带来了哪些新体验!接下来我会依据 Android Dev Summit 分享的内容以及自己的.

2021-12-26 12:05:29 152

原创 android opencv NDK人脸识别和对比,Android岗面试

只检测是否有人脸*/extern “C”JNIEXPORT jboolean JNICALLJava_com_hxg_ndkface_FaceDetection_faceDetection(JNIEnv *env, jobject thiz, jobject bitmap) {//检测人脸,opencv 有个关键类 是Mat open只会处理Mat android里面是Bitmap//1.Bitmap转成opencv能操作的C++对象MatMat mat;bitmap2Mat(env,.

2021-12-26 12:01:14 174

原创 Android MVP模式深入实践探索(二),flutter消息通知

public void init() {User savedUser = LocalDataManager.getSavedUser();if (savedUser != null) {if (!TextUtils.isEmpty(savedUser.getName())) {mMainView.setUserNameText(savedUser.getName());} else {mMainView.setUserNameText(“匿名用户”);}if (savedUser.getSe

2021-12-26 11:58:24 138

原创 Android MediaCodec 硬编码 H264 文件,征服Android面试官

另外,MediaCodec 也存在相应的 生命周期,如下图所示:当创建了 MediaCodec 之后,是处于未初始化的 Uninitialized 状态,调用 configure 方法之后就处于 Configured 状态,调用了 start 方法之后,就处于 Executing 状态。在 Executing 状态下开始处理数据,它又有三个子状态,分别是:FlushedRunningEnd of

2021-12-26 11:56:58 414

原创 Android JNI 进阶(含完整 Demo),统统给你解决

简单代码就不说了,只说一下陌生的;String类型解释:java -> StringJNI -> jstringC++ -> char*想要吧 java 的 String 转换为 C++认识的 char*就需要用到:char * j_string = const_cast<char *>(env->GetStringUTFChars(arg4, NULL));GetObjectArrayElement解释:在JNI 中只有基本类型和引用类型,Strin

2021-12-26 11:55:33 176

原创 Android input之IMS初始化,android项目实例源码

//frameworks/base/services/core/jni/com_android_server_input_InputManagerService.cppstatic jlong nativeInit(JNIEnv* env, jclass /* clazz */,jobject serviceObj, jobject contextObj, jobject messageQueueObj) {sp messageQueue = android_os_MessageQueue_getMe

2021-12-26 11:54:08 124

原创 Android AutoService 组件化,数据结构与算法面试题

并配置 JavascriptInterface 方法用于接收 Web 事件、统一处理。3).跨进程通信Web 页面所需要的内存比较大,为了避免 WebView 的OOM造成 App 的崩溃,需将Web 页面运行在独立的进程,跨进程通信使用 AIDL。① 为了方便管理,首先进行分包 MainProcess 和 WebProcess;Web页面是运行在 web 进程中,而响应 web 页面的事件及处理是在 main 进程中,进程切换借助 AIDL ,则创建一个IWebProToMainPro 的 aid

2021-12-26 11:52:43 703

原创 Android Wifi的一些属性,Android开发中常见的一些问题面试专题

public int checkState() {return mWifiManager.getWifiState();}// 锁定WifiLockpublic void acquireWifiLock() {mWifiLock.acquire();}// 解锁WifiLockpublic void releaseWifiLock() {// 判断时候锁定if (mWifiLock.isHeld()) {mWifiLock.acquire();}}// 创建一个WifiLock

2021-12-25 11:42:53 436

原创 Android UI-实现底部切换标签(fragment),一文说清

android:layout_height=“wrap_content”android:layout_centerHorizontal=“true”android:src="@drawable/btn_wantknow_nor"android:contentDescription="@null" /><TextViewandroid:id="@+id/tv_i_want_know"android:layout_width=“wrap_content”android:layout_h

2021-12-25 11:41:45 296

空空如也

空空如也

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

TA关注的人

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