Android 代码混淆

eclipse混淆: project.properties文件中打开混淆配置: proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt Android混淆: buildTypes{ release{ minifyEnabled true //开启混淆同时会删除无用的资源 zipAlignEnabled true //压缩优化 shrinkResources false //移出无用资源 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' } } 混淆规则 1.基本规则 两个常用的混淆 ......

Android IPC操作步骤

一、什么是IPC? IPC是Inter-Process-Communication的缩写,意思是进程间通信或者跨进程通信; 说起进程间通信,我们应该首先来了解一下什么是进程。按照操作系统的描述,线程是CPU调度的最小单元,而进程一般指一个执行单元,在移动设备上指一个程序或应用;一个进程可以包含多个线程; 为什么要用到多进程? 在Android系统中一个应用默认只有一个进程,每个进程都有自己独立的资源和内存空间,其它进程不能任意访问当前进程的内存和资源,系统给每个进程分配的内存会有限制。如果一个进程占用内存超过了这个内存限制,就会报OOM ......

Android学习笔记之性能优化SparseArray

学习内容: 1.Android中SparseArray的使用..     昨天研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试。首先先说一下SparseArray的原理.   SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来替代HashMap<Integer,E>这种形式,使用SparseArray更加节省内存空间的使用,SparseArray也是以key和value对数据进行保存的.使用的时候只需要指定value的类型即可.并且key不需要封装成对象类型.   楼主根据 ......

Android ANR log trace日志文件分析

Trace文件怎么获取? traces.txt只保留最后一次ANR的信息,Android系统有个DropBox功能功能,它能记录系统出现的crash错误.因此保留有发生过的ANR的信息.(log路径:/data/system/dropbox) 获取系统crash log: adb shell dumpsys dropbox –print >>log.txt 系统生成的Trace文件保存在data/anr,可以用过命令adb pull data/anr/取出 Trace文件怎么生成的? 当APP(包括系统APP和用户APP)进程出现ANR、应用响应慢或WatchDog的监视没有得到回馈时,系统会dump此时的top进程,进程中Thread的运行状态就都dump到这个Trace文件中了. 导 ......

23种设计模式总结

1.单例模式(Singleton Pattern) 定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。) 通用代码:(是线程安全的) public class Singleton { private static final Singleton singleton = new Singleton(); //限制产生多个对象 private Singleton(){ } //通过该方法获得实例对象 public static Singleton getSingleton(){ return singleton; } ......

Android设置全屏,退出全屏、沉浸式、隐藏虚拟按键

一: 设置全屏 方式一: public void setFullScreen(Activity act){ act.requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题 act.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏 } 方式二: <style name="FullSceneTheme" parent="android:Theme.Black"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:windowNoTitle" ......

Android环境搭建-Android Studio

要点: 1、下载JDK、Gradle、Android studio 2、安装JDK、Gradle 3、配置环境变量 4、安装Android Studio 5、配置Android Studio 一:准备工作: 1、下载jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html 2、下载Gradle https://gradle.org/releases/ 3、下载 Android Studio http://www.android-studio.org/ 二:开始安装三个软件,安装步骤完全傻瓜式,就不在贴图。 三:配置JDK和Gradle环境变量: 右击”我的电脑”—-“属性”—-“高级系统设置”—-&# ......

Android教学大纲-知识体系结构

首先,我不愿意去组织整个的Android 学习框架,所以直接搬了别人的教学框架(当然,也可以认为是作者没有整体框架意识)。 Android教学大纲 一、Android学习进度规划: 第1周:【UI基础】 第1天: Android环境搭建 第2天: 常用UI布局及主要控件 第3天: 常用UI控件及事件处理 第4天: UI高级控件及Android资源 第5天: Activity生命周期 【知识点】 Android环境搭建及工程目录介绍(前期使用Eclipse,版本:SDK21及以上版本,四周后逐渐接触Android Studio) 常用UI布局及主要控件 LinearLayout、RelativeLayout常用属性【 ......

Android教学大纲-编写理由

首先,编写Android教学大纲并非为了教学,也并非为了给别人学习。其次,作者水平很一般,没有能力去写文章来误人子弟。那你要说,那还写个啥子。想写这个并非心血来潮,原因有两点:

1.当年还在学校的时候,曾经给我们老师写的Android入门教学课程太杂,虽然最后和老师闹了矛盾,老师也不需要这个课程了,但为了弥补自己的过失,决定重写。

2.毕业很多年,一直在一家公司,兼任各种打杂的工作,并未有任何Android技术上的提升,已经疲倦于打杂的工作,为了捡起曾经丢失东西,决定重写。

2018-08-04 01:00

 

Android Theme和解决启动黑屏

1.修改AndroidManifest.xml 设置App的全局Theme或者Activity的界面Theme <application android:allowBackup="true" android:icon="@drawable/ipod_icon" android:label="@string/app_name" android:launchMode="singleTask"> <!-- iPod主界面 --> <activity android:name="com.apical.apicalipod.IPodMainActivity"   <!-- 使用上面定义的样式 mythou--> android:theme="@style/Theme.AppStartLoad" android:label="@string/app_name" > <intent-filter& ......

Android-网络图片下载工具类-三级缓存

一、前言: 之前写过一个简单的网络图片读取工具,读取网络图片,在Android应用中经常可见,在ListView、GridView这些控件中尤其可见。而为了提高用户体验,这些控件图片的读取,一般都是采用异步加载的方式,而使用缓存则是必不可少的环节。   现在网络上已经出现了很多功能丰富、使用简单的图片下载框架,例如universalimageloader,使用只需要初始化并且传入参数即可。这里我打算自己实现一个功能简单的图片下载工具类,采取了内存缓存+磁盘缓存+网络获取的三级缓存方式。 二、思路: 三级缓存,在网上查阅过很多资料,个人所知 ......

Java正则表达式的语法与示例

概要:Java正则表达式的语法与示例 目录 匹配验证-验证Email是否正确 在字符串中查询字符或者字符串 常用正则表达式 正则表达式语法 1匹配验证-验证Email是否正确 Java | 复制 public static void main(String[] args) { // 要验证的字符串 String str = "service@xsoftlab.net"; // 邮箱验证规则 String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}"; // 编译正则表达式 Pattern pattern = Pattern.compile(regEx); // 忽略大小写的写法 ......

Android权限大全

1.android.permission.WRITE_USER_DICTIONARY  允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SYNC_SETTINGS  写入Google在线同步设置 3.android.permission.WRITE_SOCIAL_STREAM  读取用户的社交信息流 4.android.permission.WRITE_SMS  允许程序写短信 5.android.permission.WRITE_SETTINGS  允许程序读取或写入系统设置 6.android.permission.WRITE_SECURE_SETTINGS  允许应用程序读取或写入安全系统设置 7.android.permission.WRITE_PROFILE  允许程序写入个人资料数据 8.com.android.br ......

Android 15个流行框架

1. 缓存 DiskLruCache    Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader  一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco  一个用于管理图像和他们使用的内存的库 Glide   一个图片加载和缓存的库 3. 图片处理 Picasso-transformations 一个为Picasso提供多种图片变换的库 Glide-transformations   一个为Glide提供多种图片变换的库 Android-gpuimage    基于OpenGL的Android过滤器 4. 网络请求 Android Async HTTP  Android异步HTTP库 AndroidAsync    异步Soc ......

Android 权限分类(是否需要动态申请)

在Android M 或以上,以下权限需要动态申请的意思。 permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS permission:android.permission.READ_CONTACTS permission:android.permission.READ_CALL_LOG permission:android.permission.READ_PHONE_STATE permission:android.permission.CALL_PHONE permission:android.permission.WRITE_CALL_LOG permission:android.permission.USE_SIP permission:android.permission.PROCESS_OUTGOING_CALLS permission:com.android.voicemail. ......

Android 6.0 动态权限申请简单简洁优雅的处理方式

Android M 或以上的设备,在使用涉及隐私的安全权限时,需要动态申请,虽然不难,但写下来代码工作量也不少,而且几乎每个应用都需要用到。所以一直在探索一个要足够简单简洁优雅的处理方式,强迫症的精神指导我要拒绝一切繁琐。至于完不完美那就仁者见仁了。 一、思路: 如果在每个用到权限的地方去申请,有点繁琐,所以做法是直接在每个Activity界面显示前就把该界面所需的权限全部申请允许了,再进入正常的流程。如果有权限未被允许,开发者可以在接口中自己处理,可以直接提示并退出,或者提示权限的作用后重新发起权限申请。 ......

Application, Activity, ContentProvider启动顺序

拓展知识:Zygote创建进程,Application启动以及Java类加载器等的相关基础 出现问题原因分析: 1.公司坚持使用eclipse集成friebase统计SDK 2.Application、ContentProvider、Activity执行顺序不够清晰 使用eclipse集成friebase统计SDK,涉及到aar转eclipse的过程中,aar中的jar存在资源ID的引用,我们的做法是在工程中新建一个aar包名对应的R文件,R中的资源变量,全部当前App中R文件的赋值,friebase集成过程中com.google.android.gms.R.string.common_google_play_services_unknown_issue 变量被FirebaseInitProviderdu的onCreate ......

Android Context 上下文 你必须知道的一切

本文大多数内容翻译自:http://www.doubleencore.com/2013/06/context/  我重新组织了下内容以及结构,建议大家尽可能看下原文。 1、Context概念 其实一直想写一篇关于Context的文章,但是又怕技术不如而误人子弟,于是参考了些资料,今天准备整理下写出来,如有不足,请指出,参考资料会在醒目地方标明。 Context,相信不管是第一天开发Android,还是开发Android的各种老鸟,对于Context的使用一定不陌生~~你在加载资源、启动一个新的Activity、获取系统服务、获取内部文件(夹)路径、创建View操作时等都需要Context的参与,可见 ......

让eclipse也支持FCM(Firebase Cloud Messaging)

接入谷歌推送(Firebase Cloud Messaging),我们知道,谷歌现在只支持Android studio了,那么如果eclipse需要使用怎么办呢?好像已经被抛弃了,只能自己弄一个库了。 1、进入FCM,创建我们的测试应用,输入包名即可,然后下载google-services.json文件 2、先看看as上怎么集成fcm,然后依赖compile 'com.google.firebase:firebase-messaging:9.6.1',编写自己的FirebaseMessagingService、FirebaseInstanceIdService,在AndroidManifest.xml中加上这两个服务。最后,运行,测试,发现会报一个错误,如下 这是什么鬼,好像我们还需 ......

关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决

如标题所述,最近被重复实例化launcher activity这个问题搞得很惨,这个问题有哪些表现呢?如下: 1. 在package installers 安装界面安装完一个应用后,直接打开app,然后进入了 Activity_1, 此时再通过此activity用startActivity(intent)的方法打开 Activity_2. 2. 然后按home键返回桌面,在桌面点击app图标进入,你觉得应该进入的是 Activity_2 ,实际上却是launcher Activity_1 . 3. 然而还没完,这时候你按 back 返回键,会发现返回到了之前打开的 Activity_2,再按返回,又出现 launcherActivity_1.也就是说系统重复实例化了A ......