android

内存泄漏优化

柔情痞子 提交于 2021-02-14 23:15:13
目录介绍: 01.什么是内存泄漏 02.内存泄漏造成什么影响 03.内存泄漏检测的工具有哪些 04.关于Leakcanary使用介绍 05.错误使用单例造成的内存泄漏 06.Handler使用不当造成内存泄漏 07.Thread未关闭造成内容泄漏 08.错误使用静态变量导致引用后无法销毁 09.AsyncTask造成的内存泄漏 10.非静态内部类创建静态实例造成内存泄漏 11.不需要用的监听未移除会发生内存泄露 12.资源未关闭造成的内存泄漏 13.广播注册之后没有被销毁 14.错误使用context上下文引起内存泄漏 15.静态集合使用不当导致的内存泄漏 16.动画资源未释放导致内存泄漏 17.系统bug之InputMethodManager导致内存泄漏 好消息 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢! 链接地址: https://github.com/yangchong211/YCBlogs 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微

Android内存优化14 内存泄漏常见情况5 特殊对象造成的内存泄漏 WebView内存泄漏

左心房为你撑大大i 提交于 2021-02-14 22:49:07
WebView造成内存泄露 关于WebView的内存泄露,因为WebView在加载网页后会长期占用内存而不能被释放,因此我们在Activity销毁后要调用它的 destory() 方法来销毁它以释放内存。 另外在查阅 WebView 内存泄露相关资料时看到这种情况: Webview 下面的 Callback 持有 Activity 引用,造成 Webview 内存无法释放,即使是调用了 Webview.destory() 等方法都无法解决问题(Android5.1之后)。 最终的解决方案是:在销毁 WebView 之前需要先将 WebView从 父容器中移除,然后在销毁 WebView 。详细分析过程请参考这篇文章: WebView内存泄漏解决方法 。 @Override protected void onDestroy () { super.onDestroy(); // 先从父控件中移除WebView mWebViewContainer.removeView(mWebView); mWebView.stopLoading(); mWebView.getSettings().setJavaScriptEnabled( false); mWebView.clearHistory(); mWebView.removeAllViews(); mWebView.destroy(); }

Unity AssetBundle 分割与合并

荒凉一梦 提交于 2021-02-14 22:48:26
介绍 Unity AssetBundle 中的资源非常容易被提取,如果想要阻止简单的提取行为,可以尝试在打包时将文件分割,在运行时将文件合并。 打包 打包时将文件分割成多个文件,这个可以根据需要指定规则处理。例如可以使用随机文件名、分割成随机的份数。 加载 LoadFromStream Unity 2017.4 Unity 2018.4 Unity 2019.3 Unity 2020.1 或更高版本新增了一个从流读取 AssetBundle 的 API,那么可以将多个文件合并为一个文件流供 API 使用。 Unity - Scripting API: AssetBundle.LoadFromStream 虽然通过这个 API 可以自定义 AssetBundle 加载方式,包括加密、多文件读取、内存中读取等等。但是有一个致命缺点:使用时占用文件打开数量,而操作系统对文件打开数量是有上限的。 5.5.4. iOS file handle overuse Current versions of Unity are not affected by this issue. In versions prior to Unity 5.3.2p2, Unity would hold an open file handle to an AssetBundle the entire time that

How to access payload of HMS push notifications?

你。 提交于 2021-02-14 22:24:18
问题 I have published an Android app on Huawei AppGallery and am able to send push notifications from my app backend server via HMS Push Service to the mobile phone as described below. However, I wonder how to access the push notification payload in the app: Here is how I currently send push notifications - First, my backend POSTs to https://login.vmall.com/oauth2/token the following: grant_type=client_credentials& client_id=MY_APP_ID& client_secret=MY_APP_SECRET and successfully gets an access

Android内存优化10 内存泄漏常见情况1 静态泄漏

此生再无相见时 提交于 2021-02-14 21:56:15
1,内存泄漏到本质是该释放的对象被持久化的对象引用了,造成持久化的常见情况有1,静态持久化 2,线程持久化 线程持久化 因为存活的线程是有dvk虚拟久直接持有,所以存活的线程都是持久化的 内存泄漏1 :静态Activities(static Activities) 代码如下: MainActivity. Java public class MainActivity extends AppCompatActivity { private static MainActivity activity; TextView saButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); saButton = (TextView) findViewById(R.id.text); saButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { setStaticActivity(); nextActivity(); } }); }

Unity AssetBundle 教程

自古美人都是妖i 提交于 2021-02-14 21:55:05
Unity AssetBundle 教程 AssetBundle是Unity用来处理资源热更新的,下面简单介绍AssetBundle的所有操作。本教程使用的Unity版本:Unity 2018.2.12f1 (64-bit) AssetBundle打包 设置AssetBundle名字 手动设置 打包之前按照上图所示的方法,设置一下AssetBundle的名字。 自动设置 将需要进行AssetBundle打包的图片按照“UI_”的前缀命名,然后根据图片的父目录来设置AssetBundle的名字。如下所示 然后新建一个ImageImporter.cs文件放入Editor目录下 using UnityEngine; using UnityEditor; /// <summary> /// 根据名字前缀自动化设置图片的格式以及TAG等设置 /// </summary> public class ImageImporter : AssetPostprocessor { /// <summary> /// 图片导入之前调用,可设置图片的格式、spritePackingTag、assetBundleName等信息 /// </summary> void OnPreprocessTexture() { TextureImporter importer = (TextureImporter

FireBaseUI Auth - how to know if account is from a new signup or existing user?

断了今生、忘了曾经 提交于 2021-02-14 18:40:53
问题 I am using firebaseUI for authentication. it essentially opens a a external activity and logs the user into firebase and sends the developer a call back in onActivityResult. It works great the problem is i need to know if the user is a new signup or an existing user. is there any kind of metadata or something i can use to know this ? here is what i have so far IN JAVA ANDROID: private void ititFireBaseUi() { AuthUI.getInstance() .signOut(getActivity()) .addOnCompleteListener(new

Android 11 Meetup 上海站!来了!

自作多情 提交于 2021-02-14 12:01:00
6月初, 谷歌发布了 Android 11 Beta 版 ,为开发者们带来了众多重磅更新。 这些更新包括系统内有关隐私方面的变更、键盘、聊天体验、5G 技术等优化,以及方便跟踪崩溃的 API。工具方面,包含了 Jetpack 的更新,例如工具包与 Kotlin 协程的整合、Compose 的最新进展、Android Studio 构建性能等改进,以及 Play Console 的全新改版。 更新要点: Android 11 Beta 版正式发布!以及众多面向开发者的重磅更新 Android 11 Beta 版 官网: https://developer.android.google.cn/android11 7月4日 中国第一场 Android 11 Meetup 谷歌将在全球举办一系列线上活动。7月4 日,中国的第一场 Android 11 Meetup 落在上海 ,由 GDG Shanghai 主办。我们会和大家一起探讨 Android 11 的新内容、应用兼容性,以及现代化 Android 开发的基本知识和最佳实践。让我们用技术人的热忱和独特的方式为时下的困境,注入一股技术正能量! 本次上海站活动将分为线上、线下同时进行: 线上活动信息 时间:2020 年 7 月 4 日 13:00 - 17:00 B站上海GDG直播间: https://live.bilibili.com

Android 11 Meetup 线上直播倒计时五天!

时间秒杀一切 提交于 2021-02-14 11:40:08
6月初, 谷歌发布了 Android 11 Beta 版 ,为开发者们带来了众多重磅更新。 更新要点: Android 11 Beta 版正式发布!以及众多面向开发者的重磅更新 Android 11 Beta 版 官网: https://developer.android.google.cn/android11 7月4 日,带着技术人的热忱,中国的第一场 Android 11 Meetup 将落在上海 ,由 GDG Shanghai 主办。我们会和大家一起探讨 Android 11 的新内容、应用兼容性,以及现代化 Android 开发的基本知识和最佳实践。 线上活动信息 时间:2020 年 7 月 4 日 13:00 - 16:00 B站上海GDG直播间: https://live.bilibili.com/21917305 报名:扫码直接观看 提前申请加入我们的微信交流群 获取活动资料、互动答疑、抽取礼包! 请使用微信扫码申请加入 微信群里我们会发布一些活动相关的信息,提前发送活动资料,活动后答疑,同时活动当天还会在微信群中抽取 GDG 活动大礼包! 万众瞩目的嘉宾阵容 这次我们有幸邀请到谷歌的安卓技术推广中国区负责人钟辉,安卓技术推广工程师 Fung Lam,以及国内知名的安卓开发工程师 郭霖,一起为大家带来精彩纷呈的技术分享。 详细的日程安排上了 13:00 - 13:30

Android Https自签名证书问题!

泪湿孤枕 提交于 2021-02-14 08:34:39
Android自签名证书问题 服务器给了一个自签名证书,ios那边可以使用,Android不能使用! 坑,自己搭服务器签名验证!,想看问题原因,直接移步最后! 生成自签名证书 //生成 rao.key,后面位数可以指定 需要设置密码,需要记住后面验证需要输入 openssl genrsa -idea -out rao.key 1024 // 生成证书请求 csr 文件,输入key密码,依次输入组织名称等信息 其中 Common Name 为域名或者ip,最后输入的密码为修改csr文件需要配置的 openssl req -new -key rao.key -out rao.csr // 基于上面的文件生成证书,有效期一年 openssl x509 -req -days 365 -in rao.csr -signkey rao.key -out rao.crt nginx配置https证书 //示例 server { ... listen 443; server_name www.rao.com; ssl on; #证书文件路径 ssl_certificate /etc/nginx/ssl_key/applelife.crt; #key文件路劲 ssl_certificate_key /etc/nginx/ssl_key/applelife.key; ... location / {