
android
MagicGGGGGGGGGGG
刚刚出道的小白
展开
-
Activity4个启动模式梳理
standard这种是默认的启动模式,如果是此启动模式。每次启动Activity的时候,不管是否存在这个Activity,都会创建一个新的Activity放在栈顶。SingleTop为了解决standard模式下带来的问题(如果FisrtActivity已经在栈顶了,为什么还要再创建一个新的FisrtAcvitity?),使用SingleTop启动模式可以解决如果该Activity已...原创 2020-03-13 16:39:23 · 439 阅读 · 0 评论 -
Android Studio Processor 自定义注解器不执行以及 Messager 日志看不到的问题
AndroidStudio版本:3.5.2gradle版本:5.4.1tools:com.android.tools.build:gradle:3.5.3网上搜了下,都说是需要将要编译注解的library添加annotationProcessor即可。可是我看了我的项目结构,已经添加了这些依赖:app.buildandroid { compileSd...原创 2020-01-01 22:47:34 · 2762 阅读 · 2 评论 -
解决Android Studio cannot open this project, please retry with Android Studio 3.5 or new
This version of Android Studio cannot open this project, please retry with Android Studio 3.5 or newer出现这个问题是因为使用的Gradle版本太高,只需要将gradle降级就可以,或者使用本地还能编译的配置版本替换即可。distributionUrl=https\://servic...原创 2019-12-29 21:39:31 · 33048 阅读 · 0 评论 -
ANR OOM问题汇总
记录一下碰到的ANR问题 1.在循环中频繁调用runOnUIThread()2.循环创建Bitmap的时候,应该注意不要每次都new 一个Bitmap应该再循环外createBitmap,然后重新赋值3.循环中new byte[]数组。也应该只初始化一次,相机回掉的时候就很容易出这种问题。 因为byte[]数组需要重新开辟空间,虽然java有自动回收机制,但是可...原创 2018-05-11 22:34:42 · 406 阅读 · 0 评论 -
GreenDao查询
查询:List<YTFaceBean> ytFaceBeans = MainApplication.getDaoSession().getYTFaceBeanDao().queryBuilder().where(YTFaceBeanDao.Properties.UserPin.eq(userPin)).build().list();List<User> list = use...原创 2018-05-24 21:40:46 · 3096 阅读 · 0 评论 -
Process 'command 'D:\AndroidNDK\android-ndk-r16b/ndk-build.cmd'' finished with non-zero exit value 2
Process 'command 'D:\AndroidNDK\android-ndk-r16b/ndk-build.cmd'' finished with non-zero exit value 2 Process 'command 'D:\AndroidNDK\android-ndk-r16b/ndk-build.cmd'' finished with non-zero exit valu...原创 2018-06-21 11:19:08 · 3605 阅读 · 5 评论 -
Android崩溃的时候是否会走onDestroy?
如果是主线程蹦了,那么不会走onDestroy.如果是子线程崩了,那么会走onDestroy.原创 2018-11-21 23:06:08 · 3835 阅读 · 0 评论 -
Android Graphics 内存溢出导致C层崩溃GL异常
今天给客户解决一个问题:客户在调用人脸SDK1:N接口后需要调用1:1去重,然后再去重的时候使用Toast弹出比对分数。在连续比对3分钟后,APP崩溃了。客户以为是算法的问题,然后反馈到这边。我看了一下运行的时候的内存,发现内存一直在增长。整个内存呈现增长的趋势。开始的时候以为是人脸指针没有关闭,导致的内存溢出。观察了一下,发下Native的内存并没有太大波动,于是看了Java层的内存,似...原创 2019-03-26 00:10:35 · 5664 阅读 · 0 评论 -
关于在Android线程池中遇到的问题记载
最近在公司收尾项目中碰到一个人脸识别的问题,在某种特定的情况下,人脸会出现不能识别的情况。经过重重排查,发现我们写的Launcher在进入后台的时候,主Launche会经历一次正常的生命周期。在onDestroy的时候,没有释放整个逻辑验证。找到原因后,我直接将线程池在onDestroy的时候shutdown并在while(flag)的地方将flag置为false。本来以为这样就可以停止整...原创 2019-03-31 20:43:54 · 243 阅读 · 0 评论 -
原子性、可见性和有序性
目录原子性可见性有序性原子性对基本数据类型变量的读取和复制操作就是原子性操作。且原子性操作是不能被中断的,为什么这么说呢?可以看下下面的例子。x = 3;y =x;x++;类似于这种,首先x=3就是一个简单的赋值语句,直接将3赋值给x。(只有一个步骤,无法被终端)y=x就不一样了,首先需要读取x的值,然后才能将x的值赋值给y。(有两个步骤)x++也是,先读...原创 2019-04-22 22:59:31 · 451 阅读 · 0 评论 -
Android 弱引用接口引起的回调不执行的问题
为了解决内存泄漏的问题,会使用到弱引,这样可以让程序被杀死的时候尽快释放被引用的实例。今天碰到一个问题,就是在使用弱引用的时候传入一个回调监听,但是执行的时候发现又没有执行回调,打印log发现,回调一直为null所以一直没有执行。一步一步排查,发现引用的监听是一个局部变量,在方法局部使用之后就被回收了,所以一直无法执行回调。解决的办法:将申明的局部变量变为全局变量就可以解决被回收的问题。...原创 2019-07-22 02:38:29 · 1058 阅读 · 0 评论 -
关于Android Launcher启动后,第一次点击主页键,Launcher直接重启的问题
前几天碰到的问题,mark一下原因:因为Android系统会自己启动Launcher,而Launcher作为一个应用在开机的时候接收到开机广播所以在开机广播中调用startActivity启动了。但是这并不属于系统启动的,所以系统并不知道你启动Launcher了。当你点击主页键后,系统才开始启动自己的Launcher。所以就会产生Launcher重启的现象。解决办法:不要自己启动La...原创 2019-08-16 19:55:58 · 763 阅读 · 0 评论 -
android 设置EditText只可以输入字母或者数字
android:inputType="number" android:digits="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"inputType并没有起到什么作用,唯一的作用就是限制软键盘弹出来是数字键盘...原创 2018-05-09 21:58:25 · 711 阅读 · 0 评论 -
Android判断当前Android版本号
int version = android.os.Build.VERSION.SDK_INT; if (version > 15) { }else{ }原创 2018-03-28 21:49:33 · 10590 阅读 · 0 评论 -
Android弹出式窗口PopuWindow的使用
使用PopuWindow需要注意两个精髓。 1.就是PopuWindow的显示 2.PopuMenu加载布局文件步骤: 1.创建一个PopuWindow对象 PopuWindow popuwindow;2.转换布局文件View popuMenu=getLayoutInflater.inflater(R.layout.menu,null,false); @Para原创 2017-11-06 22:23:07 · 629 阅读 · 0 评论 -
Android中使用putExtra()传递对象实例
在Android中,使用intent的putExtra()方法是没有办法传递实例的,但是我们很多情况下都需要传递实例过去,这样子会更加方便一点。接下里,我就说一下怎么使用putExtra()方法来进行实例的传递。 首先创建一个类:package com.zkteco.petsystem;import java.io.Serializable;/** * Created by Administra原创 2017-09-05 18:55:24 · 16334 阅读 · 2 评论 -
gravity 和layout_gravity的区别
layout_gravity : 指该视图与上级视图的对齐方式。 gravity:布局内部视图与本线性布局的对其方式。举个例子: <LinearLayout android:layout_width="250dp" android:layout_height="250dp" android:background="#000000" and原创 2017-11-04 21:12:57 · 642 阅读 · 0 评论 -
Android保存从网络获取的图片
思路:首先将网络上的图片保存为Bitmap,然后保存bitmap/** * 获取网络图片并转换为Bitmap * @param url * @return */private Bitmap getImageFromNet(String url) { Log.d("Magic",""+url); HttpURLConnection conn = null; try {原创 2017-11-19 21:45:31 · 1615 阅读 · 0 评论 -
Android调用摄像头取像
思路:利用Camera和SurfaceHolder步骤 **1.创建布局文件,初始化控件** 利用SurfaceView进行相机预览 <SurfaceView android:layout_width="match_parent" android:layout_height="match_parent" android:i原创 2017-11-27 21:02:07 · 1062 阅读 · 1 评论 -
SqlLite存储float[]数组型数组
今天碰到一个问题,公司提供的人脸算法提取的特征点是float[]数组,在存储的时候想了一些办法,有存储为byte[]或者字符串等等,但是最后都是失败告终,因为虽然能够存储但是怎么还原呢?可能是我太菜吧,,哈哈哈查找了很多方法后,找到了一个折中的办法,就是使用Gson啦!先使用Gson将float[]数组转换为String字符串,最后在转成float[].具体实现代码如下:Gson gson = n...原创 2018-02-12 20:38:29 · 6620 阅读 · 9 评论 -
Android SQLite 自增重置 自增清零
执行以下语句即可db.execSQL("update sqlite_sequence set seq=0 where name='表名'")将要清空的表替换为表名即可原创 2018-02-12 21:04:10 · 1578 阅读 · 4 评论 -
Android 异步任务 AsyncTask的使用
public class DownloadTask extends AsyncTask<Void,Integer,Boolean> { private static final String TAG = "Magic"; private Context mContext; private ProgressDialog progressDialog ; ...原创 2018-02-12 21:05:08 · 335 阅读 · 0 评论 -
GreenDao和LitePal的一些使用心得
这里有个大神有更加详细总的来讲,两者都是比较好用的工具,虽然都无法满足我的一个需求:自动存储float[]数组。但是GreenDao在编译的过程中就会告诉你无法解析float[]数组类型,但是LitePal在使用过程中直接抛出异常(无法找到与之匹配的类型)。GreenDao报错LitePal使用过程中报错(不是我使用方法不当,我试过不加float[]类型的就不会报错)其次,我发现,LitePal在...原创 2018-02-13 14:02:50 · 2069 阅读 · 1 评论 -
Android-Animation动画学习
Android动画主要分为 补间动画 和 逐帧动画 动画的实现方式 1.代码实现 2.xml文件实现所有演示都基于一张图片补间动画 补间动画 之 Alpha:透明度渐变动画(1)编写Alpha渐变动画文件duration:持续时长,以ms为单位 fromAlpha:开始时的渐变度 toAlpha:结束时的渐变度 若需无限循环,需要设置...原创 2017-11-26 21:29:49 · 294 阅读 · 0 评论 -
简单的Java对象数组进行排序
比如要对一个对象进行排序,根据他的分数来进行排序,首先要是实现Comparable接口,实现compareTo方法。public class Person implements Comparable<Person>{ int score; String name; public Person(int score, String name) { super(); t...原创 2018-04-17 09:06:52 · 6067 阅读 · 0 评论 -
Bitmap镜像
private Bitmap convertBitmap(Bitmap srcBitmap){ int width = srcBitmap.getWidth(); int height = srcBitmap.getHeight(); Bitmap newBitmap = Bitmap.createBitmap(width,height, Bitmap.Config.AR...原创 2018-03-28 21:47:34 · 1840 阅读 · 0 评论