- Hilt 和 ViewModel 在 Android 中的使用总结(Activity、Fragment、Compose)
奋斗理想
Composeandroidcomposeandroid
1.前言在现代Android开发中,依赖注入(DI)和状态管理是构建健壮应用的关键。Hilt是基于Dagger的官方DI框架,大幅简化了依赖注入的配置ViewModel是Jetpack组件,用于管理UI相关数据并保持生命周期感知本文全面总结Hilt+ViewModel在Activity、Fragment和Compose中的最佳实践2.基础配置2.1添加依赖//Hiltimplementation"
- Android LiveData用法详解
GoshenC
giteeAndroid安卓Kotlin前端设计
一、概述LiveData是AndroidJetpack中的一个生命周期感知型数据容器。它的主要特点是:生命周期感知:LiveData会根据观察者(如Activity、Fragment)的生命周期状态自动管理数据更新,避免内存泄漏和崩溃问题。数据驱动UI更新:当LiveData数据发生变化时,所有处于活跃状态的观察者都会被自动通知更新UI,无需手动管理。解耦UI与数据:在MVVM架构中,ViewMo
- Android解答者
水玥月岛
android
Android部分:Android四大组件ActivityAndroid知识体系总结2020之Android部分Activity篇_a->b->c界面,其中b是singleinstance的,那么c界面点back返-CSDN博客BroadcastReceiverAndroid面试系列文章2020之Android部分Broadcast篇-CSDN博客ContentProviderAndroid知识体
- Android ViewBinding使用详解
2401_85730911
android
使用–如果为Module启用了视图绑定,则会为Module包含的每个XML布局文件生成一个绑定类。每个绑定类都包含对根视图和所有具有ID的视图的引用。绑定类的名称是通过将XML文件的名称转换为Pascal大小写并在末尾添加Binding一词来生成的。例如,给定一个名为activity_progressbar.xml的布局文件:……布局文件中有6个ProgressBar,只有3个ProgressBa
- ViewModel vs AndroidViewModel:核心区别与使用场景详解
奋斗理想
Composecompose
在Android的MVVM架构中,ViewModel和AndroidViewModel都是用于管理UI相关数据的组件,但二者有一些关键区别:1.ViewModel基本用途:用于存储和管理与UI相关的数据,生命周期与Activity/Fragment解耦(即使配置变更如屏幕旋转,数据也不会丢失)。依赖关系:不直接依赖Android框架(如Context)。适用场景:适合纯逻辑数据处理,不需要Cont
- 创新实训博客(7)——Kotlin的Fragment、Handler、ListView和Adapter配置使用
一位不愿意透露姓名的热心网友
Fragment管理碎片是Android中一个非常重要的部分,我这里的想法是在一个Activity中规定某一个区域,这里可以按照需要显示不同的内容,而Fragment就能很好的实现这个需求。创建fragment的layout文件和class文件onCreateView函数,我没有进行修改。onActivityCreated函数,在这里我是因为要与List进行交互等等操作,因此把操作写在这里。ove
- Kotlin FragmentTransaction多容器管理多个fragment
缘来的精彩
androidkotlinfragmentTransaction
在Activity中管理五个Fragment的切换显示和隐藏,并且希望将这部分逻辑进行封装。之前已经教过他们如何在Kotlin中使用FragmentTransaction进行基本的添加、隐藏、显示和替换操作,现在需要进一步封装这些操作,提高代码的可维护性和复用性。管理五个Fragment,可能需要在不同的情况下切换显示不同的Fragment,同时隐藏其他的。之前给出的例子是两个Fragment的情
- Android 天气APP(三十一)每日提醒弹窗
2401_89191684
android
增加位置如下:然后进入SplashActivity,重写getBiYingResult方法,代码如下:/**必应壁纸数据返回@paramresponseBiYingImgResponse*/@OverridepublicvoidgetBiYingResult(Responseresponse){if(response.body().getImages()!=null){//得到的图片地址是没有前缀
- Android Studio 的NotePad制作(日志本)
2401_89191684
androidstudionotepad++java
privatevoidflush(){PrefVO.dataFlush();noteVOList=access.findAllNote();noteBaseAdapter=newNoteBaseAdapter(NotePadMainActivity.this,R.layout.item,noteVOList);noteList.setAdapter(noteBaseAdapter);noteNum
- Android布局优化-include、merge以及ViewStub使用
XuZhenhao0609
androidandroidstudioide
一、inlude标签inlude标签用于xml复用,实现布局模块化,减少开发者工作量。include的标签是否有效?1、id:a)在同一个xml下include两次layout_title.xml并对include标签分别设置不同的id,运行应用之后使用layoutinspector查看,发现Activity中存在两个id为tv_title的TextView(应该是layoutinspector的
- Android 底部EditView输入时悬浮到软键盘上方
小趴菜8227
android
1.修改Activity的Manifest配置确保你的Activity在AndroidManifest.xml中有以下配置:关键点:adjustResize是关键属性,使布局会为键盘腾出空间stateHidden可选,表示初始时不自动弹出键盘2.更新布局文件使用CoordinatorLayout实现最可靠的效果:3.确保主题配置正确在styles.xml中,确保Activity主题不是全屏模式:t
- p2p断开的两种情况:WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY(4)和WLAN_REASON_DEAUTH_LEAVING(3)
追梦-北极星
Wifip2p蓝桥杯eureka
events.cwpas_event_disconnect流程1:(复现是将p2pclient远离GO,知道p2p断开)reason_code为WLAN_REASON_DEAUTH_LEAVING,就算设置自动回连,也无法进入自动回连流程if(deauth&&reason_code>0){if(wpas_p2p_deauth_notif(wpa_s,addr,reason_code,ie,ie_l
- Jetpack Compose 安全关闭 Activity 或 Fragment 总结
奋斗理想
Composecompose
JetpackCompose安全关闭Activity或Fragment总结1.关闭Activity方法1:直接调用finish()(推荐)@ComposablefunCloseActivityButton(){valactivity=LocalContext.currentas?ActivityButton(onClick={activity?.finish()}){Text("CloseActi
- kotlin,jetpack compose,使用DataStore保存数据,让程序下次启动时自动获取
wangz76
kotlinandroidDataStorejetpackcompose
implementation("androidx.datastore:datastore-preferences:1.0.0")packagecom.example.mydatastoreimportandroid.content.Contextimportandroid.os.Bundleimportandroidx.activity.ComponentActivityimportandroid
- Fragment间数据共享ViewModel
王的备忘录
K2_Jetpack
两个Fragment通过ViewModelProvider获取ViewModel时传入的都是它们宿主Activity。这样,当这两个Fragment各自获取ViewModelProvider时,它们会收到相同的SharedViewModel实例(其范围限定为该Activity)。此方法具有以下优势:Activity不需要执行任何操作,也不需要对此通信有任何了解。除了SharedViewModel约
- android 父fragment和子fragment会共用一个viewmodel吗
心上之秋
android
在Android开发中,ViewModel是一个用于在Activity和Fragment中共享数据的组件。对于父Fragment和其内部的子Fragment(通过ChildFragmentManager加载的Fragment),是否能共用一个ViewModel,是许多开发者关心的问题。一、答案:父Fragment和子Fragment是否共用ViewModel?默认情况下,父Fragment和子Fr
- 安卓开发工程师-Android 应用架构
NurDroid
android架构
一、Android应用架构的分层结构Android应用架构通常采用分层设计,常见的分层结构包括视图层(ViewLayer)、业务逻辑层(BusinessLogicLayer)和数据层(DataLayer)。这种分层结构有助于代码的组织和维护,便于开发团队协作和扩展功能。1.视图层(ViewLayer)视图层主要负责用户界面的展示和用户交互。它通常由Activity、Fragment和View等组件
- Android依赖注入的实现
YuanYuan_Tech
Android
1.目标通过Java注解代替常规的findViewById()初始化View,和setOnClickListener()设置监听器。最终实现效果MainActivity.java代码如下:packagecom.example.myframework;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button
- (kotlin) Android 13 高版本 图片选择、显示与裁剪功能实现
奋斗理想
androidKotlinandroidkotlin开发语言
要在Android13上实现图片选择、显示并添加裁剪功能,我们可以使用第三方裁剪库如UCrop。以下是完整实现方案:1.添加依赖在build.gradle(Module)中添加:dependencies{//基础依赖implementation'androidx.activity:activity-ktx:1.7.0'implementation'androidx.fragment:fragmen
- WebView加载URL时添加时间戳可以防止缓存问题方案
高林雨露
androidwebview
在WebView加载URL时添加时间戳可以防止缓存问题,以下是实现方法:1.对于加载网页URL的情况:MainActivity.java//...existingcode...StringoriginalUrl="https://example.com/page.html";StringurlWithTimestamp=originalUrl+(originalUrl.contains("?")?
- Open GL ES ->GLSurfaceView在正交投影下的图片旋转、缩放、位移
Yang-Never
OpenGLESandroidandroidstudio开发语言kotlin贴图
XML文件Activity代码classMainActivity5:AppCompatActivity(),View.OnClickListener{companionobject{//变换增量privateconstvalROTATION_DELTA=10.0fprivateconstvalSCALE_DELTA=0.25fprivateconstvalTRANSLATE_DELTA=0.25f
- Kotlin问题汇总
自动花钱机
Android(车载)kotlin开发语言android
Kotlin问题汇总真机安装调试查看真机的Android版本,将build.gradle文件中的minSdk改为手机的Android版本,点SyncNow更新设置apk安装失败在gradle.properties全局配置中设置android.injected.testOnly=falseUnresolvedreference:在activity_main.xml中出现已注册id,但是mainAct
- Android 科大讯飞语音识别(详细步骤+源码)
2401_85730195
android语音识别人工智能
}}implementationfiles(‘libs/Msc.jar’)改完记得Sync一下然后修改布局activity_main.xml接下来就是MainActivity了③编码一、声明变量和初始化privatestaticfinalStringTAG=“MainActivity”;privateSpeechRecognizermIat;//语音听写对象privateRecognizerDia
- 3.27 美团面试SQL 多日数据的前后比较
OuterTraveler
sql数据库
活动发起人@小虚竹想对你说:这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你参加为期14天的创作挑战赛!提醒:在发布作品前,请将不需要的内容删除。Table:Activity+--------------+-------
- OpenGL ES -> GLSurfaceView立方体纹理贴图+透视效果
Yang-Never
OpenGLES贴图androidandroidstudiokotlin矩阵
XML文件Activity代码classMainActivity6:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main6)}}GLSurfaceView代码classMyG
- WPF 自定义行为
她说彩礼65万
WPFwpf
在WPF中,自定义行为(CustomBehavior)是一种通过附加属性或逻辑扩展控件功能的方式。行为允许你将特定的交互逻辑封装到一个独立的类中,从而实现代码复用和解耦。这种机制特别适合在MVVM模式下使用,因为它可以避免直接操作控件的代码后置逻辑。WPF的System.Windows.Interactivity或Microsoft.Xaml.Behaviors.Wpf库提供了对行为的支持。以下是
- Android笔记【17】返回数据的两种方法
m0_72696598
Android开发android笔记
目录一、问题二、具体分析1、代码2、区别1.目的和使用场景resultLauncherstartActivity2.数据传递方式3.返回结果的管理4.代码示例对比使用resultLauncher启动活动并处理返回结果:使用startActivity启动活动(不处理返回):总结3、使用startActivity启动活动,也可以返回信息。因为有putExtra区别总结示例对比1.使用startActi
- kotlin——MVVM框架下的大型项目优化、以及activity和viewmodel臃肿的优化
wy313622821
kotlin-javakotlinandroid开发语言
目录概要优化思路一、重构过长的Activity二、优化臃肿的ViewModel项目结构示例代码1.Activity封装到单独的Fragment中2.把ViewModel拆分成多个子viewmodel小结概要在大型项目中,随着项目越做越大,activity和viewmodel的代码会越来越多,尽量保持Activity和ViewModel的代码精简和易于维护是非常重要的。个人建议700行以上就应该考虑
- Android 11.0 framework实现对系统语言切换的功能实现
安卓兼职framework应用工程师
android11.0Rom开发疑难问题分析android11.0Rom定制化高级进阶androidromframewokr语言切换系统语言切换
1.前言在11.0的系统rom定制化开发过程中,在定制某些接口的过程中,需要通过系统提供接口,然后实现对系统语言的切换功能实现,接下来分析下系统中关于系统语言切换的相关功能2.framework实现对系统语言切换的功能实现的核心类frameworks/base/core/java/android/app/IActivityManager.aidlframeworks/base/services/c
- Open GL ES ->GLSurfaceView+离屏渲染滤镜作用的Bitmap+动态顺序叠加滤镜作用链的RecyclerView
Yang-Never
OpenGLESandroidstudioandroid图像处理开发语言javakotlin
XML文件Activity代码classMainActivity4:AppCompatActivity(){privatelateinitvarglSurfaceView:FilterSurfaceViewprivatelateinitvarintensityTextView:TextViewprivatelateinitvarintensitySeekBar:SeekBarprivatelate
- ASM系列六 利用TreeApi 添加和移除类成员
lijingyao8206
jvm动态代理ASM字节码技术TreeAPI
同生成的做法一样,添加和移除类成员只要去修改fields和methods中的元素即可。这里我们拿一个简单的类做例子,下面这个Task类,我们来移除isNeedRemove方法,并且添加一个int 类型的addedField属性。
package asm.core;
/**
* Created by yunshen.ljy on 2015/6/
- Springmvc-权限设计
bee1314
springWebjsp
万丈高楼平地起。
权限管理对于管理系统而言已经是标配中的标配了吧,对于我等俗人更是不能免俗。同时就目前的项目状况而言,我们还不需要那么高大上的开源的解决方案,如Spring Security,Shiro。小伙伴一致决定我们还是从基本的功能迭代起来吧。
目标:
1.实现权限的管理(CRUD)
2.实现部门管理 (CRUD)
3.实现人员的管理 (CRUD)
4.实现部门和权限
- 算法竞赛入门经典(第二版)第2章习题
CrazyMizzz
c算法
2.4.1 输出技巧
#include <stdio.h>
int
main()
{
int i, n;
scanf("%d", &n);
for (i = 1; i <= n; i++)
printf("%d\n", i);
return 0;
}
习题2-2 水仙花数(daffodil
- struts2中jsp自动跳转到Action
麦田的设计者
jspwebxmlstruts2自动跳转
1、在struts2的开发中,经常需要用户点击网页后就直接跳转到一个Action,执行Action里面的方法,利用mvc分层思想执行相应操作在界面上得到动态数据。毕竟用户不可能在地址栏里输入一个Action(不是专业人士)
2、<jsp:forward page="xxx.action" /> ,这个标签可以实现跳转,page的路径是相对地址,不同与jsp和j
- php 操作webservice实例
IT独行者
PHPwebservice
首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端与client端。我测试的环境为:apache2.2.11 php5.2.10做这个测试之前,要确认你的php配置文件中已经将soap扩展打开,即extension=php_soap.dll;
OK 现在我们来体验webservice
//server端 serve
- Windows下使用Vagrant安装linux系统
_wy_
windowsvagrant
准备工作:
下载安装 VirtualBox :https://www.virtualbox.org/
下载安装 Vagrant :http://www.vagrantup.com/
下载需要使用的 box :
官方提供的范例:http://files.vagrantup.com/precise32.box
还可以在 http://www.vagrantbox.es/
- 更改linux的文件拥有者及用户组(chown和chgrp)
无量
clinuxchgrpchown
本文(转)
http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/
http://ydlmlh.iteye.com/blog/1435157
一、基本使用:
使用chown命令可以修改文件或目录所属的用户:
命令
- linux下抓包工具
矮蛋蛋
linux
原文地址:
http://blog.chinaunix.net/uid-23670869-id-2610683.html
tcpdump -nn -vv -X udp port 8888
上面命令是抓取udp包、端口为8888
netstat -tln 命令是用来查看linux的端口使用情况
13 . 列出所有的网络连接
lsof -i
14. 列出所有tcp 网络连接信息
l
- 我觉得mybatis是垃圾!:“每一个用mybatis的男纸,你伤不起”
alafqq
mybatis
最近看了
每一个用mybatis的男纸,你伤不起
原文地址 :http://www.iteye.com/topic/1073938
发表一下个人看法。欢迎大神拍砖;
个人一直使用的是Ibatis框架,公司对其进行过小小的改良;
最近换了公司,要使用新的框架。听说mybatis不错;就对其进行了部分的研究;
发现多了一个mapper层;个人感觉就是个dao;
- 解决java数据交换之谜
百合不是茶
数据交换
交换两个数字的方法有以下三种 ,其中第一种最常用
/*
输出最小的一个数
*/
public class jiaohuan1 {
public static void main(String[] args) {
int a =4;
int b = 3;
if(a<b){
// 第一种交换方式
int tmep =
- 渐变显示
bijian1013
JavaScript
<style type="text/css">
#wxf {
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#97FF98);
height: 25px;
}
</style>
- 探索JUnit4扩展:断言语法assertThat
bijian1013
java单元测试assertThat
一.概述
JUnit 设计的目的就是有效地抓住编程人员写代码的意图,然后快速检查他们的代码是否与他们的意图相匹配。 JUnit 发展至今,版本不停的翻新,但是所有版本都一致致力于解决一个问题,那就是如何发现编程人员的代码意图,并且如何使得编程人员更加容易地表达他们的代码意图。JUnit 4.4 也是为了如何能够
- 【Gson三】Gson解析{"data":{"IM":["MSN","QQ","Gtalk"]}}
bit1129
gson
如何把如下简单的JSON字符串反序列化为Java的POJO对象?
{"data":{"IM":["MSN","QQ","Gtalk"]}}
下面的POJO类Model无法完成正确的解析:
import com.google.gson.Gson;
- 【Kafka九】Kafka High Level API vs. Low Level API
bit1129
kafka
1. Kafka提供了两种Consumer API
High Level Consumer API
Low Level Consumer API(Kafka诡异的称之为Simple Consumer API,实际上非常复杂)
在选用哪种Consumer API时,首先要弄清楚这两种API的工作原理,能做什么不能做什么,能做的话怎么做的以及用的时候,有哪些可能的问题
- 在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
- java-归并排序
bylijinnan
java
import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] a={20,1,3,8,5,9,4,25};
mergeSort(a,0,a.length-1);
System.out.println(Arrays.to
- Netty源码学习-CompositeChannelBuffer
bylijinnan
javanetty
CompositeChannelBuffer体现了Netty的“Transparent Zero Copy”
查看API(
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/buffer/package-summary.html#package_description)
可以看到,所谓“Transparent Zero Copy”是通