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包下面的一些类的问题





阅读全文
1 0
原创粉丝点击