知晓当前在哪一个活动 工作当中可能接手一份别人的代码,当需要在某个界面修改东西的时候,却找不到这个界面对应的是哪个活动。...现在点击按钮分别进入三个活动, 可以看到把当前活动的类名打印了出来。...()方法,表示将当前正在创建的活动添加到活动管理器里, 然后在Base中重写onDestroy()方法,并调用ActivityCollector的removeActivity()方法,表明将一个马上要销毁的活动从活动管理器里移除...(android.os.Process.myPid()); } }); } 加上了杀掉当前进程的代码,以保证程序完全退出, android.os.Process.killProcess...(android.os.Process.myPid()); killProcess()方法用于杀掉一个进程,接收一个进程ID参数,我们可以通过myPid()方法来活动当前程序的进程ID, 需要注意的是
探究Android活动的小技巧 1.找出当前的活动 当我们在查看别人的代码的时候可能不能第一眼就发现首次的活动是哪一个,我们可以通过以下的方法来找出当前的主活动是哪一个: 新建一个BaseActivity...import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.util.Log...:"+ getClass().getSimpleName()); } } 然后让其他的类继承这个类这样当我们启动程序的时候就可以在log日志中找出当前执行的是哪一个活动. 2.随时随地退出程序 新建一个...import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast...}); } } 3.启动活动的最佳方法 SecondActivity添加如下代码: public static void actionStart(Context context
中通过标签指定android:launchMode属性来选择启动模式。...,每次启动活动都会创建该活动的一个新的实例。...修改AndroidManifest.xml标签中主活动的启动模式: android:name=".MainActivity" android:launchMode="singleTop..." android:label="This is MainActivity"> 然后运行以后查看logcat,创建了一个实例,然后在点击按钮,不会再产生新的实例。...,并把整个活动之上的所有活动统统出栈,如果没发现就会创建一个新的活动实例。
这每个活动中我们都重写了这个方法,它会在活动第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布局、绑定事件等。 onStart()。...这个方法在活动由不可见变为可见的时候调用,对资源进行加载。 onResume()。这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。...这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。...它和onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法并不会执行。 onDestroy()。...---- 活动被回收前的数据保存与恢复 onSaveInstanceState()回调方法可以保证在活动被回收之前一定会被调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。
返回栈 Android中的活动是可以层叠的,每启动一个新的活动,就会覆盖在原活动之上, 然后点击Back键就会销毁最上面的活动,下面的活动就会重新显示出来。...Android是用任务(Task)管理活动的,一个任务就是一组存放在栈里的活动的集合, 这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构。...活动状态 每个活动在其生命周期中最多可能有4中状态, 运行状态 处于返回栈栈顶。 暂停状态 不处于栈顶位置,但仍可见,因为并不是每一个活动都占满整个屏幕的,比如对话框形式的活动。...销毁状态 一个活动从返回栈移除就成销毁状态了,系统最倾向回收这种状态的活动。 活动的生存周期 Activity类定义了7个回调方法,覆盖了活动生命周期的每一个环节。...前台生存期: 活动在onResume()和onPause()之间经历的就是前台生存期,这期间活动总是处于运行状态的,此时的活动是可以和用户进行交互的,平时接触最多的也就是这个状态下的活动。
两个子活动分别加入一个TextView, 然后在AndroidManifest.xml内配置DialogActivity的主题。... android:name=".NormalActivity" /> android:name=".DialogActivity"...android:theme="@style/Theme.AppCompat.Dialog"> 使用了android:theme属性,用于给当前活动指定主题的,这里用的,android...修改主活动的布局和代码,加入两个按钮,分别用于启动NormalActivity和DialogActivity。 然后重写Activity的7个回调方法,分别打印相应的语句。...观察活动的生命周期 启动时 依次执行onCreate(),onStart(),onResume()。
如果你的用户满足下面的条件的话,系统将会在到期后对用户进行清理和删除 从未在 Discourse 站点上发布任何内容 如果你在 Discourse 站点上发布了内容,但是你的内容被删除了或者其他什么原因...,那么你的用户是不会被清理程序删除的。...满足 clean up inactive users after days 参数设置的值 trust level 为 0 的用户 Discourse 对用户进行删除的话,会完全删除用户的邮件地址,如果你需要再次使用网站的话...如果你想让你的注册用户保留更长时间的话,你可以修改 clean up inactive users after days 参数的值。 默认值为 730,就是 2 年。...通常来说 2 年也算是一个比较合理的值,但更多的时候我们可能是并不希望清理这些用户。 所以就直接改成 7300 这个值吧,就是 20 年。
应该有很多小伙伴遇到这样一个问题,在线上已发布的app里,关于https的cer证书过期,从而导致app所有网络请求失效无法使用。...这个时候有人就要说了,应急发布一个已更新最新cer证书的apk不就完事了么,其实没那么简单,iOS还好可以通过appstore提供的api查询到新版本,但android就不一样了,需要调用自己Server...端提供的api接口查询到新版本,并获取apk下载路径,问题是https都不能访问了,如何请求到版本信息呢?...下面提供两种常见的解决方案: 方案一 将版本信息接口让后台改成http(不推荐,后台因素不可控),或者将本地https的设置一个不安全校验(推荐)。...app沙盒里面读取即可),在https证书即将过期时,从服务器下载最新的cer证书更新到沙盒里面,App每次初始化网络请求时读取sdcard最新的证书文件,这样App就永远不会出现https证书过期导致无法使用的问题
Android 10 在数据可控性方面又作了进一步优化,提高了用户对此类个人数据的控制权,而其中的一项关键变更则会对应用的活动监测和数据检索方式造成影响,要求 Android 应用依照新规定来监测用户的身体活动并从...Android 10 中的身体活动识别权限 Android 10 针对活动识别引入了全新的运行时权限。...如果您的应用需要追踪用户步数及卡路里消耗,或者需要对用户的身体活动 (例如: 步行、骑车或坐车) 进行分类,请您按需调用下列 API: Android 计步传感器 Activity Recognition...加强身体活动识别权限的管理 从 2019 年 12 月开始,如果应用未在清单文件中包含 Google Play 服务的旧版本活动识别权限,系统将限制这些应用的数据访问。...Google Fit 身体活动 API 在 Android 平台上,此项新权限会对 Google Fit API 中的部分数据类型造成影响。
本文首先分析HTTP协议在安全性上的不足,进而阐述HTTPS实现安全通信的关键技术点和原理。然后通过抓包分析HTTPS协议的握手以及通信过程。...即使已经经过过加密处理的通信,也会被窥视到通信内容,这点和未加密的通信是相同的。只是说如果通信经过加密,就有可能让人无法破解报文信息的含义,但加密处理后的报文信息本身还是会被看到的。...(2) 不验证通信方的身份可能遭遇伪装 在HTTP协议通信时,由于不存在确认通信方的处理步骤,因此任何人都可以发起请求。另外,服务器只要接收到请求,不管对方是谁都会返回一个响应。...; AlertDescription:直接表示警报代码; ---- 4.在Android中使用HTTPS的常见问题 (1) 服务器证书验证错误 这是最常见的一种问题,通常会抛出如下类型的异常: ?...(4) Android上TLS版本兼容问题 之前在接口联调的过程中,测试那边反馈过一个问题是在Android 4.4以下的系统出现HTTPS请求不成功而在4.4以上的系统上却正常的问题。
SslPolicyErrors errors) 74 { 75 return true; //总是接受 76 } if (blnHttps)内的代码就是针对...https所做的处理 需要注意的是 1、当使用https请求的时候需要确定加密协议是哪个,这个可以通过火狐查看到,如下图 ?...2、只有Framework4.5及以上才支持1.1和1.2协议 如果仍有什么不明白的地方请留言吧
未找到安装包", Toast.LENGTH_SHORT).show(); return; } File apkFile = new File(apkPath...这个问题是由于 Android 7.0 权限更改导致,确切的讲是 Android 对权限的进一步管理,从 Android 6.0 的动态权限申请到这个问题可以看出 Google 也是越来越重视 Android... android:authority 属性指定要用于 FileProvider 生成的 content URI 的 URI 权限,这里推荐使用 包名.fileprovider...未找到安装包", Toast.LENGTH_SHORT).show(); return; } File apkFile = new File(apkPath...7.0 上就必须做这种适配了,所以平时建议大家多关注 Android 新的 API ,尽早替换已被官方废弃的 API ,实际上 FileProvider 在 API Level 22(Android
Android --- 图片处理的方法 转换 - drawable To bitmap 缩放 - Zoom 圆角 - Round Corner 倒影 - Reflected bitmapPrcess...android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; import...android.graphics.PixelFormat; import android.graphics.PorterDuffXfermode; import android.graphics.Rect...; import android.graphics.RectF; import android.graphics.Bitmap.Config; import android.graphics.PorterDuff.Mode...> android="http://schemas.android.com/apk/res/android" android:orientation="vertical
前言 阅读本文前最好阅读Android PMS处理APK的复制这篇文章,因为它和本篇文章本来是一篇文章,由于公号文章的字数限制,被拆分为了两篇文章,这一篇我们接着来学习PMS处理APK的安装。...frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java void handleReturnCode...,在安装前确保安装环境的可靠,如果不可靠会清除复制的APK文件,注释3处用于处理安装后的收尾操作,如果安装不成功,删除掉安装相关的目录与文件。...2.总结 本文和上一篇文章Android PMS处理APK的复制主要讲解了PMS是如何处理APK复制和安装的,主要有几个步骤: 1....PackageInstaller安装APK时会将APK的信息交由PMS处理,PMS通过向PackageHandler发送消息来驱动APK的复制和安装工作。 2.
前言 在上一篇文章Android包管理机制之PackageInstaller安装APK中,我们学习了PackageInstaller是如何安装APK的,最后会将APK的信息交由PMS处理。...那么PMS是如何处理的呢?主要是APK的复制和安装,由于公号文章字数的限制,这篇文章只能介绍 PMS处理APK的复制,APK安装过程会在后续文章讲解。...注释1处创建了类型为INIT_COPY的消息,在注释3处将InstallParams通过消息发送出去。 1.1 对INIT_COPY的消息的处理 处理INIT_COPY类型的消息的代码如下所示。...,来查看对INIT_COPY类型消息的处理。...1.2 对MCS_BOUND类型的消息的处理 消息不带Object类型的参数 查看对MCS_BOUND类型消息的处理: frameworks/base/services/core/java/com/android
在Android中,手势处理是用户与设备交互的重要组成部分,尤其在触摸屏设备上。...手势检测通常通过触摸事件进行,而GestureDetector是一个用于识别和处理标准手势(如单击、长按、滑动、双击等)的方便工具类。...基础知识 1、 触摸事件: Android设备通过触摸屏幕来处理用户输入。...它通过委托OnGestureListener接口或者SimpleOnGestureListener来处理各种手势。...Multi-touch: Android可以处理多点触控事件,使复杂的手势(如旋转、双指滑动等)成为可能。
由于Android中并没有及早的有一份这样的标准,当我们想把网页添加到桌面时,仍然需要使用苹果的Touch Icon。...Android中有缺陷的实现 在Android WebView提供了处理Touch Icon的回调,onReceivedTouchIconUrl(WebView view, String url,boolean...precomposed)该方法返回了对我们有用的touch icon的url,和是否为预组合(在IOS中不需要进行视觉处理)。...虽然有这些数据,我们可以进行处理,但是这其中是有问题的,就是我们不好确定文件的大小,来选择适合的图片。...中的屏幕密度(这样更加Android化了)。
Android的事件有好几类,我们遇到最多的就是Touch事件。...1、为什么直接采用共享内存 --- 个人理解 通常情况Android的IPC采用的都是Binder,而在这里采用的是共享内存(Shared Memory)。...预处理:清理Android无用数据,保存有用数据。 WMS分发:有权利监听各种的事件,一般都是当前resume的view。哪个view是resume的呢?...写的上一篇文章中《 Android View和Window的关系 》有提到,这个由WMS控制,因此有一个WMS分发的过程。 用户进程处理:也就是各种view的event dispatch。...所以Reader收到事件后经过一定的处理后,最终处理者还是dispatcher。
上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本期继续来学习其他四种事件监听器。...四、直接绑定到标签 Android还有一种更简单的绑定事件监听器的方式,那就是直接在界面布局文件中为指定标签绑定事件处理方法。...接下来通过一个简单的示例程序来学习Android直接绑定到标签进行事件处理。...(View source)方法,该方法将会负责处理该按钮上的单击事件。...修改启动的Activity,然后运行程序,点击按钮,可以看到下图所示界面效果。 ? 到此,基于监听事件的处理5种形式学习完毕,下期继续学习基于回调的事件处理。
View 作为Android中最直接的和用户进行交互的单位,对于 View 的事件处理重要程度自然不言而喻,View 的事件处理直接影响到用户体验,下面我们来看一下对 View 的触摸事件的处理...大致意思是:实现这个方法去处理屏幕的触摸事件,如果这个方法用于处理单击事件,它将会:播放单击事件的声音,回调OnClickListener 接口的方法,如果可能的话处理单击动作。...其实,对于 View 的触摸事件的处理,Android还提供了另一个方法:通过 GestureDetector 类(手势识别)和 这个类里面的提供的3个接口和一个类,先看一下官方文档: ?...的触摸事件交给 GestureDetector 对象去处理,GestureDetector 对象会将触摸事件交给其设置的手势监听接口处理 3、根据要求实现 GestureDetector 类中提供的手势监听接口来识别对应的触摸事件...* 那么接下来的触摸事件都不会传递给该 View ,也就无法将触摸事件作为手势进行处理 * 详细的可以搜索一下 Android 里面的触摸事件的分发和拦截机制
领取专属 10元无门槛券
手把手带您无忧上云