Android学习问题大集合(持续跟新中)
来源:互联网 发布:阿里云 安骑士 编辑:程序博客网 时间:2024/06/01 01:34
1:百度地图
(1)在studio开发,一般就是把解压的sdk按要求放入libs(放.jar包)和新建的jniLibs(放.so)包中。但是我这样老是有问题,获取不到经纬度的值。
解决办法:在libs包中在复制一份armeabi-v7a。(只有基础定位sdk可以,我在加了计算sdk时候,和我原来的armeabi文件冲突。找不到.so。????)
(2)我在libs包中有一个armeabi,复制一份armeabi-v7a。在百度地图的基础定位功能sdk加了计算的sdk,出现如以下图
解决办法:把armeabi中的.so 文件移到armeabi-v7a。
(3)在百度地图API开发中已知两个点之间的经纬度坐标计算其距离
public String getLatLngDistance(LatLng start, LatLng end){
//自己实现距离算法:
/**
* 计算两点之间距离
* @param start
* @param end
* @return String 多少m , 多少km
*/
double lat1 = (Math.PI/180)*start.latitude;
double lat2 = (Math.PI/180)*end.latitude;
double lon1 = (Math.PI/180)*start.longitude;
double lon2 = (Math.PI/180)*end.longitude;
// double Lat1r = (Math.PI/180)*(gp1.getLatitudeE6()/1E6);
// double Lat2r = (Math.PI/180)*(gp2.getLatitudeE6()/1E6);
// double Lon1r = (Math.PI/180)*(gp1.getLongitudeE6()/1E6);
// double Lon2r = (Math.PI/180)*(gp2.getLongitudeE6()/1E6);
//地球半径
double R = 6371.004;
//两点间距离 m,如果想要米的话,结果*1000就可以了
double dis = Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1))*R;
NumberFormat nFormat = NumberFormat.getNumberInstance(); //数字格式化对象
if(dis < 1){ //当小于1千米的时候用,用米做单位保留一位小数
nFormat.setMaximumFractionDigits(1); //已可以设置为0,这样跟百度地图APP中计算的一样
dis *= 1000;
return nFormat.format(dis)+"m";
}else{
nFormat.setMaximumFractionDigits(2);
return nFormat.format(dis)+"km";
}
}
(4)PopupWindow中点击Spinner 显示
android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@96babef is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:598)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:341)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
at android.widget.PopupWindow.invokePopup(PopupWindow.java:1279)
at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1118)
at android.widget.ListPopupWindow.popupShow(ListPopupWindow.java:1885)
at android.widget.Spinner$DropdownPopup.popupShow(Spinner.java:1189)
结局方案:Spinner的XML文件中添加一条属性android:spinnerMode="dialog"即可
(5)文字显示你需要支付¥50,一般是用两个TextView控件,怎样才能只用一个TextView控件?
在string.xml定义as,%1$s代表的是输出字符串
<string name="as" >你需要支付: %1$s</string>在用sapnnableStringbuilder获取文字内容,在设置setpan()。
tv_monkey.setText(getString(R.string.as,as));SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(tv_monkey.getText().toString());ForegroundColorSpan span = new ForegroundColorSpan(Color.RED);spannableStringBuilder.setSpan(span, 5, tv_monkey.getText().toString().length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);tv_monkey.setText(spannableStringBuilder);
(6)scollview不能滚动特殊原因
偶然发现,ScrollView的滑动效果出不来,经过很多试验,发现是在我的Activity当中,我使用了如下的代码段: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
(7)poupwindow被虚拟导航栏遮挡
在使用PopupWindow时,在华为P6等自带虚拟导航栏的手机,底部被挡住,根据网上说的 :
自定义 LinerLayout ;android:theme="@android:style/Theme.Light.NoTitleBar" ;
什么加getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 都不行,
后面再PopupWindow 的 setContentView()加一句setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
(8)科大讯飞人脸识别问题,初始化代码写了,但是还是出现错误码10111(初始化不成功)
用studio开发人脸识别的.so文件和.jar,分别在jniLibs文件和libs中,还要在build.gradle里面配置,跟buildTypes同级,加上
sourceSets{
main{
jniLibs.srcDir(['libs'])
}
}
(9)Android Studio 2.3版本 Run项目不能自动启动APP(即时运行)问题
解决方法:打开设置—-搜索’run’,显示下图界面——取消勾选Instant run;
关于Android技术准备,主要是包含下面几项:
- 项目经历
- java基础
- 设计模式
- 算法
- 网络相关知识
- Android基础
- Android源码
- Android性能优化
- 开源库源码
面试问题:
1.事件分发流程
2.View的渲染机制
3.动画的原理,底层如何给上层信号
4.编译打包的过程
5.Android如何找到相应的资源文件
6.ANR的原理
面试问题:
1.Bitmap使用时候注意什么?
2.OOm是否可以try catch
3.内存泄漏如何产生?
4.适配器模式,装饰者模式,外光模式的异同
5.ANR如何产生?
6.stringbuffer和stringbuilder的区别
7.如何保证线程安全
8.java4中引用
9.Jni用过么
10.多进程场景见过么
11.关于handler,在任何地方new handler都是什么线程下?
12.sqlite升级,增加字段的语句
13.bitmap recycler 相关
14.强引用置为null,会不会被回收
15.glide使用什么缓存
16.Glide内存缓存如何控制大小
17.如何能保证多线程读写文件的安全
面试问题:
1.线程与进程的区别
2.为什么要有线程,而不是仅仅用进程
3.算法判断单链表成环与否
4.如何实现线程同步
5.hashmap数据结构
6.ArrayList和linkedlist异同
7.oject类的equal和还是从的方法重写,为什么
8.hashmap如何put数据(从hashmap源码角度讲解)?
9.简述IPC?
10.fragment之间传递数据的方式?
11.简述tcp四次挥手?
12.threadlocal原理
13.内存泄漏的可能原因?
14.用IDE如何分析内存泄漏?
15.OOM的可能原因?
16.线程死锁的4个条件?
17.差值器&估值器
简述消息机制相关
进程间通信方式?
Binder相关?
触摸事件的分发?
简述Activity启动全部过程?
okhttp源码?
RxJava简介及其源码解读?
性能优化如何分析systrace?
广播的分类?
点击事件被拦截,但是相传到下面的view,如何操作?
Glide源码?
ActicityThread相关?
volatile的原理
synchronize的原理
lock原理
翻转一个单项链表 1->2->3->4->5->null =====> 5->4->3->2->1->null
string to integer
合并多个单有序链表(假设都是递增的)
Activity生命周期简述
.常见内存泄漏情景及避免内存泄漏的措施
Actvity启动模式简述
简绘观察者设计模式UML图
算法,求公共子序列(或者是子串,记不清了)
Java四种引用
自定义view重写哪几个方法?
http 的session&cookie的区别
简述工作线程更新UI的方法
应用最多占多少内存
滑动卡顿如何解决(不同原因及对应处理方式)
自定义view实战
多线程,多进程 相关
Java四种引用的使用
XX项目你负责什么
Sqlite 怎么增加一个字段
XX项目中是怎么创建数据库的
Sqlite 怎么删除一个字段
有什么你觉得自己做得好的地方
为什么用Retrofit(一个开源库)
Retrofit与之前的网络库有什么优势
XX项目中你们自己定义的线程池来管理任务,不使用框架,那么,后来新的项目怎么设计的
你认为Rxjava的线程池与你们自己实现任务管理框架有什么区别?
内存泄漏的常见场景
怎么发现&分析内存泄漏
处理有序数组为什么比无序数组更快 参考StackOverflow
热修复与插件化相关
Integer类是不是线程安全的,为什么
不使用同步锁如何实现线程安全
面试头条的时候在线编程:从上到下从左到右输出二叉树
针对concurrent包下面的一些类的问题
- Android学习问题大集合(持续跟新中)
- C++面试题目集合(持续跟新)
- IT公司智力题(持续跟新中)
- LR性能测试经验总结(持续跟新中)
- LigerUI学习---界面搭建、数据请求、分页实现(持续跟新)
- 开发中常用的第三方工具(持续跟新,依时间而定)
- Android学习必用-大牛的博客(持续更新中……)
- Android 开发小问题集合(持续更新)
- HTML(个人学习笔记,不断跟新修改中)
- 常用学习、下载网站集合(持续更新中)
- java集合框架源码学习目录(持续更新中)
- android-问题整理(持续更新中)
- C语言进阶知识点(持续跟新)
- 关于XCode问题解决办法(将持续跟新)
- C++报错及解决问题(持续跟新)
- 那些你不可错过的好书(持续跟新)
- chromium相关问题集合--持续更新中
- Android学习资源(持续更新中)
- hibernate延迟加载的传说级错误org.hibernate.LazyInitializationException: could not initialize proxy
- 在虚拟机中安装Ubuntu详细过程
- HDU 6034-(2017多校第一场 Balala Power!)(贪心)
- maven deploy return code is :401
- Override 重写
- Android学习问题大集合(持续跟新中)
- HDU 6033 简单计数
- 关于 ClassLoader.loadClass() 与 Class.forName() 关系
- 恩格尔伯格诞辰,给机器人装上眼睛和小脑
- Android 利用Matrix实现图片随手指平移、旋转、缩放
- Java过滤字符串无效字符
- 利用HorizontalScrollView实现仿QQ的侧滑菜单
- exercise7
- Appium swip滑动