
Android基础
文章平均质量分 68
法迪
Android系统与续航工程师、应用开发工程师
https://github.com/sufadi
332157261@qq.com
展开
-
手写Android中MVC、MVP、MVVM对比
1. MVC、MVP、MVVM1.1 MVCModel 模型层: 业务模型的数据与行为=数据+业务逻辑View 展示层: 管理用户界面=组合模式的View集合Controller: Model与View的桥梁,用于控制程序流程, 确保View可以访问和显示Model的数据。Android中为生命周期和事件机制收发,例如Activity、Fragment优点:开创性提出了View与Model分离缺点:存在View和Controller没有彻底解耦和Controller承担了过重的非本职任务解原创 2022-03-08 22:00:52 · 2982 阅读 · 0 评论 -
手写一个简单版的Handler消息驱动机制
Why-为什么要使用HandlerAndroid 绘制UI是在主线程中,但是呢?如果主线程如果执行超过5秒的耗时任务啊,会ANR。所以一般做法就是开辟多线程,让子线程去做耗时任务,做完再通知主线程可以刷新UI了。Handler这个时候就出场了,他的作用就是为多线程进行通信来着。即线程之间通过Handler可以相互打招呼。例如刷新UI的时候,子线程执行完耗时任何后通过Handler告诉主线程去刷新下UI。What-什么是HandlerHandler机制其实主要由Handler、Loop、MessageQ原创 2022-01-28 21:02:50 · 917 阅读 · 0 评论 -
windowLeak泄漏日志
windowLeak泄漏日志输入法窗体导致的windowLeak泄漏日志01-17 20:52:53.706 13312 13312 E WindowManager: android.view.WindowLeaked: Activity com.fadi.onetouchbooster.ui.MainActivity has leaked window androidx.appcompat.app.AppCompatDelegateImpl$ListMenuDecorView{6ea6d53 V.E.原创 2022-01-18 21:56:59 · 2276 阅读 · 0 评论 -
Android 判断是否为平板的三种方法
方法一、ro.build.characteristics 属性值进行判断 public static boolean isPad() { boolean result = false; String mDeviceType = SystemPropertiesWrapper.get("ro.build.characteristics", "default"); if (mDeviceType != null && mDeviceType原创 2020-10-28 13:56:12 · 9041 阅读 · 0 评论 -
小品-三句半-背诵apk
1. 需求公司年会要求每个部门出一个节目,我们的界面是小品《三句半》,4个人,每人说一句,奈何台词太长了,故写了个背台词的demo.最终年会10个节目中,获得第二名,很开心。1.1 apk 下载路径https://github.com/sufadi/Sketch_Programmer_Recitation/tree/master/apkFile1.2 源码下载路径https://gith...原创 2020-01-20 09:13:05 · 896 阅读 · 0 评论 -
[转]LiveData配合ViewModel简单使用
0 原文https://blog.youkuaiyun.com/u011810352/article/details/81334339LiveData是Google推出的一系列的框架组件的其中一个,它是一个可以被观察的数据持有类,能够感知Activity、Fragment等组件的生命周期。一个观察者去观察LiveData后,当观察者的生命周期处于STARTED或RESUMED状态时(即onStart()...转载 2019-12-22 22:35:57 · 274 阅读 · 0 评论 -
[转]Android-LiveData简单使用
0 原文https://blog.youkuaiyun.com/u011810352/article/details/81334339一个观察者去观察LiveData后,当观察者的生命周期处于STARTED或RESUMED状态时,的数据发生变化,则会通知观察者;若观察者处于其他状态,即使LiveData的数据发生变化,也不会发出通知。2019-12-22 22:17:33.126 11578-11578...转载 2019-12-22 22:23:32 · 384 阅读 · 0 评论 -
[转]Android ViewModel 的使用
0 原文学习https://www.jianshu.com/p/721cdcdf11b21. ViewModel 好处目前看到的好处是:横竖屏切换的时候,ViewModel 可以有效保留数据状态。防止数据初始化或丢失2. 代码示例2.1 调用示例package com.fadi.su.viewmodeldemo;import androidx.appcompat.app.AppCo...转载 2019-12-20 17:46:12 · 627 阅读 · 0 评论 -
[AS]ViewModelProviders 引用不到
1. ViewModelProviders 找不到,导不了包ViewModelProviders.of(this).get(xxx.class);2. 方法1:build.gradle 新增dependencies { implementation 'android.arch.lifecycle:extensions:1.1.1'}3. 方法2:Module 新增下输入 an...原创 2019-12-20 17:28:04 · 880 阅读 · 1 评论 -
消息通知栏-禁止应用的消息通知
0. 消息通知栏-禁止应用的消息通知1. 底层源码frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.javapackage com.android.server.notification;/** {@hide} */public class Not...原创 2018-09-27 10:42:13 · 1376 阅读 · 0 评论 -
Android ellipsize 失效的解决方案
ellipsize 跑马灯失效的解决方案请严格按照如下顺序android:ellipsize="middle"android:singleLine="true"android:focusable="true"android:marqueeRepeatLimit="marquee_forever"android:focusableInTouchMode="true"androi...原创 2018-08-17 14:45:07 · 3210 阅读 · 0 评论 -
Android基础-8.0设置源码的 AsyncTaskLoader
Android 8.0 Settings模块AsyncTaskLoader获取应用缓存大小,安装包大小,存储占用大小继承 AsyncLoader 类获取AppStorageStats数据/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.原创 2017-12-26 17:48:56 · 805 阅读 · 0 评论 -
AIDL 服务端给客户端发消息
1.源码示例https://github.com/sufadi/AndroidCpuTools代码清单D:\AndroidStudioProject\CpuRun\app\src\main\aidl\com\fadisu\cpurun\service\ICpuMsgCallBack.aidlD:\AndroidStudioProject\CpuRun\app\src\main\ai原创 2018-02-01 16:52:11 · 1772 阅读 · 0 评论 -
[报错]token null is not valid is your activity running
1.异常日志我的这个报错,和网上的报错,所依附的 activity 不太一样,之前还延时创建 悬浮窗,但是没用。01-04 07:04:25.319 30523-30523/com.fadisu.cpurun E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.fadisu.cpurun, PID: 30523android.vi原创 2018-02-02 17:31:54 · 9451 阅读 · 1 评论 -
Android 悬浮窗 Demo
1.创建悬浮窗和显示 private void showFloatWindow() { mResultTv = new TextView(mContext); mResultTv.setBackgroundColor(mContext.getColor(R.color.float_bg)); mResultTv.setTextColor原创 2018-02-02 17:44:29 · 1537 阅读 · 0 评论 -
Multiple substitutions specified in non-positional format
1.报错Error:(12) Multiple substitutions specified in non-positional format; did you mean to add the formatted=”false” attribute?2.原因识别 %s 和 %d 失败 string name="cpu_cur_freq">CPU %d : 当前的频率原创 2018-01-29 11:16:38 · 2127 阅读 · 1 评论 -
[学习笔记] Handler 初识
0. Handler 简介优秀文章推荐http://blog.youkuaiyun.com/u012827296/article/details/51236614http://blog.youkuaiyun.com/duanmulirui/article/details/689259580.1 用途Handler 是常被开发者拿来更新 UI 的一种消息处理机制。0.2 为什么使用 Hand...原创 2018-03-15 11:48:56 · 287 阅读 · 0 评论 -
Android 应用版本号和应用版本名称
Android 应用版本号和应用版本名称import android.app.Application;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.util.Log;import com.fadi.batteryanalysistool....原创 2018-05-16 11:26:51 · 1341 阅读 · 0 评论 -
Android 命令 adb shell 获取屏幕分辩率
adb shell wm size简洁方式Physical size: 720x1440adb shell dumpsys window displays更加详细的方式Dump time : 2018-01-05 11:23:05.909 WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays) Disp...原创 2018-05-16 12:05:58 · 2528 阅读 · 0 评论 -
Android基础-AsyncTaskLoader 的用法
AsyncTaskLoader 作用AsyncTaskLoader主要针对的是Activity配置的变化(屏幕旋转),不会引起数据的变化 同时数据源的变化可以实现自动更新 。使用方法核心类 AsyncTaskLoaderpackage com.su.asyncloaderdemo;import android.content.AsyncTaskLoader;import android.conte原创 2017-12-26 17:39:02 · 862 阅读 · 0 评论