文章目录 一、打印 Android 中当前运行的 Activity 任务栈信息 二、Activity 任务栈信息分析 三、Activity 在相同 Stack 的不同 Task 情况 一、打印 Android...中当前运行的 Activity 任务栈信息 ---- 使用如下命令 , 打印 Android 手机中的 Activity 栈 : adb shell dumpsys activity activities...; 默认状态下 , 相同的应用 , 打开的 Activity , 其 Activity 都在同一个任务栈中 ; 三、Activity 在相同 Stack 的不同 Task 情况 ---- 默认状态下..., 同一个应用启动的两个 Activity 都在相同 Stack 的相同 Task 中 , 但是如下情况会出现 Activity 在相同 Stack 的不同 Task 中 ; 参考 【Android...singleTask 启动模式 , 则新启动的 Activity 放在另一个 Task 中 ; 注意 : 两个 Activity 虽然在不同的 Task 任务中 , 但还是在相同的 Stack 栈中
doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...从方法签名的组成规则我们可以看出,方法的返回类型不是方法签名的组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回值类型不同的方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...: 那为什么返回类型不能做为方法签名的一部分呢?...执行以上程序的执行结果如下: 因此我们可以得出以下结论。 匹配原则1:精准类型匹配 方法重载会优先调用和方法参数类型一模一样的方法,这是第一优先匹配原则:精准类型匹配。...总结 在同一个类中定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。方法重载的典型使用场景是 String 中的 valueOf 方法,它有 9 种实现。
在Python开发过程中,区分错误和正确的返回结果是一项非常重要的任务。如果我们不能清晰地处理这两者,那么代码就会变得难以维护和扩展。接下来,我将为大家详细介绍几种有效的模式来解决这个问题。...返回元组或字典 传统的做法是使用元组或字典来返回结果和错误信息。...,那就是使用者必须记住元组或字典中各个元素的含义。...使用Maybe和Either模式 在函数式编程中,Maybe 和 Either 是两种常用的模式来处理可能出错的情况。 Maybe模式:通常有两个状态,Just value 和 Nothing。...print(f"The result is {result.value}") else: print(f"An error occurred: {result.error}") 总结 区分错误和正确的返回结果是代码质量的一个重要指标
译者 | 平川 策划 | Tina 在搭建这个网站的过程中,我遇到了以下奇怪的事情: console.log(new Date('2025/05/28').toDateString()); // Wed...(new Date('2025-5-28').toDateString()); // Wed May 28 2025 你在你的机器上可能会得到不同的结果。...在 JavaScript 中,Date代表一个时间点(即自纪元以来的毫秒数)。...当字符串中没有明确指定时区偏移时,它们都会转而使用本地时间,包括像'2025/05/28'这样的日期字符串。 ES5 在 2009 年年底发布,要求支持一种新的标准化日期 - 时间格式。...被诅咒的区域 在阅读浏览器日期解析源代码之前,我从未意识到它可以如此宽容。 下面是 Chrome/Firefox 浏览器的一个有趣示例:你能找出为什么这个日期字符串被解析为五月吗?
一般打开url有以下几种方式: 调用默认浏览器 用WebView 用CustomTabsIntent 默认浏览器的话,是跳转到别的app,我方app就切换到后台了,至于什么时候返回回来就不确定了,且在后台有被回收的风险...CustomTabs在用户的默认浏览器中显示网页,相当于在自己的app中用默认浏览器打开网页,效果类似WebView,但使用起来比WebView轻量,也更安全,性能更好。...效果: 这是打开应用宝的一个App下载链接。可以看到加载速度还是很快的,就像打开activity一样。...(context, R.color.colorPrimary)) .setSecondaryToolbarColor(ContextCompat.getColor(context...(context, R.color.colorPrimary)) .setSecondaryToolbarColor(ContextCompat.getColor(context
通过这篇文章你将学习到: Context 与 Activity 有什么关系? Context对于Activity有什么作用? 不同类型的Context的应用场景是什么?...不同类型的Context的应用场景是什么?...返回的是同一个Applicatoin对象,但作用域不同: getApplicatoin()的作用域:Activity、Service,但不能在BroadcastReceiver里使用; getApplicationContext...getApplicationContext():返回的是Application类型的Context Activity.this:返回的是当前Activity的Context getBaseContext...():返回构造函数指定的Context / setBaseContext()里传入的Context 至此,关于Context分析完毕 总结 本文主要总结了 Context对于Activity的意义 Carson
---- 开始秋名山飘移之路 这个也是具体项目中遇到的项目需求:需要在一个特定的界面中(都是图表和各种数据,可能需求分享给别人,告诉别人这个数据怎么怎么,这个图表怎么怎么) 所以给我们开发的需求就是:...同时建一个和这个截图图片一样大小的图片,并且用Canvas包裹。这样等会我们就可以用这个paintCanvas在新的图片上面进行画画了。 我们在onDraw方法中也只要画这二个Bitmap就可以了。...我们的目标就是他们二个交集的地方,让原本的线消失。 下表就是二个线交集的时候,不同Mode下呈现的情况。我们这里就可以用Clear模式。交集的地方,让底下的颜色消失就可以。 ?...,贴上相应的相关自定义View和涂鸦的所属的Activity的代码。...大家也可以去我上面贴的Github地址中取下载demo。
如下图: 在 mock 中定义 API 接口字段及返回结果(需要注意的是,这里的 JSON 数据包的返回结果需要的是双引号"")然后在小程序根目录下。...在自定义接口的 invoke() 方法中跳转到宿主 App 的其它页面,做完一系列操作之后,按系统返回键想返回小程序,结果却返回到了宿主 App 中启动小程序的页面,为什么?...原因: 跳转到宿主App其它页面这一步,是通过宿主App中的Context实例来启动Activity的,并且没有把Activity压入新的任务栈中。...Android小程序SDK是多进程架构的,小程序和宿主App处于不同进程中,所处的任务栈自然也是不同的。...Context实例来启动 Activity,就需要对启动原生页面的 Intent 设置"支持多任务栈"和“开启新任务栈”的 Flag,这样可以在原生 App 的进程中新开一个任务栈,开启新任务栈之后,
,因为建议用Androidx代替所以用例文件引用的都是Androidx,结果运行用例的时候会这样报错: ?...单测中获取context Instrument test里面经常要获取context,对于单测来说可以直接使用InstrumentationRegistry.getInstrumentation.context...在上一节引用GrantPermissionRule时发现Developer上给了两个不同包下的同名东东: ? ?...至于为什么多出来了个arm64文件夹,最后推测可能是本地之前新建过一个对应的模拟器。不过为什么运行GrantPermissionRule.grant()之后会触发这条路径搜索,暂时还没搞清楚。...环境配置 IDE本身没有太多需要配置的,代理配置好就ok 如何Mock 无返回值的方法: 暂时没找到和mockito一样的处理(mockito有专门对应void返回类型的几条语句),下面是mockk网站上一个类似的方案
那就动手吧,在 colors.xml 中定义两组颜色,分别表示日间和夜间的主题色: 不同的模式会去选择不同的 colors.xml 。在 Activity 调用 recreate() 之后,就实现了切换日/夜间模式的功能。 说了这么多,直接上代码。...布局的内容和上面 setTheme() 方法中的相差无几,这里就不贴出来了。...看到这里,肯定有人会问,为什么要设置对应的 “_night” ?到底是通过什么方式来设置日/夜间模式的呢?...参数中的 dayResId 是日间模式的资源id,如果当前主题是日间模式的话,就直接返回 dayResId 。反之当前主题为夜间模式的话,先根据 dayResId 得到资源名称和资源类型。
() 验证用户输入 Context.getCacheDir() 获取缓存数据文件夹的路径 DateUtils.formatDateTime() 用来进行区域格式化工作,输出格式化和本地化的时间或者日期...() 顾名思义,这是对数字进行格式化操作的时候用的 Application.registerActivityLifecycleCallbacks 管理Activity的生命周期 Activity.recreate...” 适配带有输入框的页面 android:weightSum=“3” 设置LinearLayout中的权重总数 android:fillViewport=“true” ScrollView设置全屏 SystemClock.sleep...“几天前”/“xx days ago” 格式的字符串,自带翻译 mWebView.canGoBack() webview判断是否可返回 DiffUtil 处理Recyclerview数据流 setBackground..., R.drawable.your_drawable) 代替getDrawable(int) ContextCompat.getColor(context, R.color.color_name) 代替
Activity A和B的布局文件中为共享元素组件添加android:transitionName="xxx"属性。...2.源码中的Dialog实际上是Activity,并设置了android:windowIsTranslucent为true,所以从fab到dialog的动画效果实际上是Activity的过渡动画。...Override public int getOpacity() { return paint.getAlpha(); } } 5.有了前面的准备之后,就可以在dialog中配置进入和退出的动画效果了...,可以修改,需要注意的是这里调用container.getHeight()结果为0 MorphTransition sharedEnter = new MorphTransition(ContextCompat.getColor...,使用开始和结束时的对应颜色和圆角值就可以构造相应的MorphTransition,将MorphTransition设置为Activity的进入或者退化动画即可生效啦。
getApplication()返回的Context是属于Application的,它会在整个应用的生命周期内存在,远大于某个组件的生命周期,所以即使某个引用长期持有Context对象也不会引发内存泄露...频繁操作的文件建议考虑使用缓冲提高程序性能,intent不要传递大量数据,使用持久化数据来处理(存在文件中),不要在application中缓存数据 在涉及网络的操作中,必须要考虑到没有网络和信号差等情况...不能在 Activity 没有完全显示时显示PopupWindow和Dialog。...不同Module的资源文件、布局名不要相同 需要管理相互独立的并且隶属于Activity的Fragment使用FragmentManager(),而在Fragment中动态的添加Fragment要使用getChildFragmetManager...如果返回的List非空,那么你才可以安全的使用这个intent。
Android的动态加载插件apk 分析 动态加载主要分为加载使用插件的资源和管理插件的Activity、service、BroadcastReceiver的功能 1.插件的资源加载 我们都知道要获Res...引用 PackageManager manager = context.getPackageManager(); //通过apk包文件路径获取到这个包的信息, (检索在包归档文件中定义的应用程序包的总体信息...管理,这边只做了native页面的管理 定义插件和宿主共同的接口,放在单独的module,让宿主和插件的module同时引用 import android.app.Activity; import android.os.Bundle...); Log.i("chenby","thisContext == null: "+(thisContext == null)); } } 宿主调用activity的页面和引用资源...2、管理插件的native窗口,插件和宿主同时定义共同的接口,宿主利用DexClassLoader反射加载插件的native窗口类,判断插件类是否继承了相同的接口,反射接口对象,去管理插件页面
/** * 热门城市(包含海外和国内) */ @GET("/top?...showCenterPopupWindow方法中的入参 ?..., 280), SizeUtils.dp2px(context, 120), false); } 因为是要在页面启动的时候就出现这个弹窗,而popupWindow显示依赖activity,并且要等...这样传入的类型就会影响到适配器中的样式了,最后一步就是在getHotCityResult方法中对返回值中做数据的处理了。 ?...新增部分的代码如下: toolbar.setNavigationIcon(getResources().getDrawable(R.mipmap.icon_return_white));//返回箭头颜色
, 背景设置成透明的, 然后会计算组件坐标, 记录坐标位置, 再在弹出的整个对话框中 绘制一个 带小三角对话框的布局, 并让其执行动画; 2....坐标计算时机 坐标计算 : 计算坐标时需要获取组件的宽 和 高, 下面的代码中可以获取宽高, 获取到宽高后, 其坐标自然就计算好了; -- 获取屏幕宽高代码 : 在其中的 onGlobalLayout...this.context = context; /* * 说明传入的对象是一个 Activity * 获取 Activity 的布局加载器 */ LayoutInflater...layoutInflater = ((Activity) context) .getLayoutInflater(); //要显示的对话框布局 View dialogView = layoutInflater.inflate...0.0f : getStatusBarHeight()));// 因为三角形是通过XML绘制出来的,可以到activity_tip_overlay.xml中把三角形的那个ImageView背景设置一下,
,选择图片的Activity是GalleryFinal自带的,所以我们这里要写的GridView是用来显示选中并返回的图片,这里的代码就不放出来了,效果图如下: ?...(Activity.this, R.color.titleBarBgColor); // 标题栏文字颜色 int colorTitleBarText = ContextCompat.getColor(Activity.this..., R.color.titleBarTextColor); // 浮动按钮常规颜色 int colorFabNormal = ContextCompat.getColor(Activity.this,...3.注释掉源码中对图片数量上限的判断 无图选择时,点击浮动按钮可以返回 可能有人不解,为何不点击标题栏的返回按钮返回而要点击浮动按钮返回?...refreshSelectCount方法源码 从源码中可以看到,预览按钮的可见性判断逻辑仅仅与isEnablePreview有关,而没有和选中的图片数量进行关联,所以我们修改代码如下: public
Activity身为四大组件之一,在整个App中扮演着向用户呈现界面的角色。在平常的开发中,我们会自定义一个类去继承Activity去实现界面。...而Activity还有本身之外,还有FragmentAtivity、以及AppCompatActivity,你知道这几个Activity的区别吗?...让我一一道来 各Activity所在的包 Activity: android.app.Activity FragmentAtivity: android.support.v4.app.FragmentActivity...又是Activity子类 各Activity的作用 AppCompatActivity: 能够让运行在API Level 7或者以上版本且继承AppCompatActivity的Activity,使用ActionBar...Activity: 我们经常使用的系统API,其定义是在Context类中,具体如下: public abstract AssetManager getAssets(); public abstract
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。...---- 前言 上一篇文章中详细分析了Fragment相关知识,那么作为“小Activity”,Fragment能做什么呢,如何使用Fragment得到最佳实践呢。...ActivityGroup原本主要是用于为每一个TabHost的子项管理一个单独的Activity,但目前已经被废弃了。为什么呢?当然就是因为Fragment的出现了!...()操作是维持着一个队列的,在这个队列中,根据ADD进去的先后顺序形成了一个链表,我们上面的操作在这个列表中的形式变化如下图所示: ?...②在Fragment中重写onHiddenChanged方法可以对Fragment的hide和show状态进行监听。
1.Activity代码: /** * 简易弹幕效果实现 * Created by admin on 15-6-4. */ public class MainActivity extends ActionBarActivity...", "測试一下", "弹幕这东西真不好做啊", "总是出现各种问题~~", "也不知道都是为什么?麻烦!", "哪位大神能够帮帮我啊?"...", "測试一下", "弹幕这东西真不好做啊", "总是出现各种问题~~", "也不知道都是为什么?麻烦!", "哪位大神能够帮帮我啊?"...(随机值,可是与屏幕中已有的不反复) int verticalMargin = getRandomTopMargin(); textView.setTag(verticalMargin...0~1.返回值的曲线表征速度加减趋势 @Override public float getInterpolation(float input) { return (float