编程问题集

来源:互联网 发布:javaweb商城源码 编辑:程序博客网 时间:2024/06/17 09:09

2017/3/21 记载

1.《okhttp返回json数据:com.squareup.okhttp.internal.http.RealResponseBody@2b88614》

解决:
点击打开链接

2.@responsebody表示该方法的返回结果直接写入HTTP response body中,所以springmvc有自动转化jso数据的功能

3.response.body().string()与response.body().toString()区别

Object.ToString() 是所有类的实例化对象,而sting()可以直接转化成string


4.RelativeLayout相对布局是个人觉得在android布局中比较常用且好用的一个,当然如果想让布局更漂亮是需要多种布局混合搭建的,这里就需要更深入的学习了,在这只介绍下有关相对布局的东西。


5.RelativeLayout相对布局是个人觉得在android布局中比较常用且好用的一个,当然如果想让布局更漂亮是需要多种布局混合搭建的,这里就需要更深入的学习了,在这只介绍下有关相对布局的东西。


6. margin与padding 的区别问题

padding是站在父view的角度描述问题,是自己的内容与其父控件的边之间的距离。margin则是站在自己的角度描述问题,自己与旁边的某个组件的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了。

2017.3.22 记载

在做学习中遇到的问题,并给予解决:

1.命名

php和js在命名时一般采用下划线风格,而Java中一般采用的驼峰法,让后台的哥们改吧,反正前端和后台都不爽。


2.Gson是怎么解决下划线和驼峰法的命名一一对应问题呢?

Gson在序列化和反序列化时需要使用反射,那就会想到注解,那么对于json中email_address这个属性对应POJO的属性则变成:
@SerializedName("email_address")public String emailAddress;

还有一个注解:三个值当中任一出现一个都可以与之对应。
@SerializedName(value = "emailAddress", alternate = {"email", "email_address"})public String emailAddress;

@Expose注解属性serialize被设置成了false,暴露给Gson时可以忽略掉该属性


3.Gson如何解析变量,而不是一个serializable对象

(1)第一种方法是我将方法返回的类型改成object,返回回来还是它的值,而不是KeyValue结构,显然失败了。
(2)这个问题最终没有解决


4.如何获取OKHttp3异步匿名内部方法onResponse的结果

Java的匿名内部类的使用限制是它只能访问外围类中的final成员,而Java中final对引用类型的语义是“这个引用在初始化之后不能用于指向别的对象”,至于被指向的对象的状态怎么变它不关心。所以在这个问题上,我花了很多时间,包括打了无数次断电确定都没值。通过使用双端阻塞队列(BlockingDeque)才解决这个取值问题。就个人而言,觉得OKHttp这方面没做充足。


5.**BlockingDeque双端阻塞队列(BlockingDeque)取值问题

BlockingDeque只能通过takeFirst()取一次值,去第二次就会报错,因为队列当中已经没有该值了。



2017.3.23 记载


1.ThreadPoolExecutor

了解一下  JAVA 多线程(集合的多线程)Deque与LinkedBlockingDeque深入分析



2.Gson如何解析json字符串,并封装成List<T>

List<Course> coursesList = gson.fromJson(str,new TypeToken<List<Course>>(){}.getType());


4.Toolbar布局被ListView布局给盖住的问题

将ToolBar布局的高度设置成wrap_content,并将其他的布局相对它的位置而设置


5.web端获取不到session值

这个今天没时间了解到,因为web端和android端的session设置和传递、接收都不一样。需要深入了解一下其他文档


2017.3.24 记载

完成了两个功能demo,遇到问题如下:其余未解决的问题,明天来解决

1.解决泛型适配器的问题?(解决)

2.三元表达式不能直接在别的方法中直接用

viewholder.CourseName.setText("课程:"+evaluate.getCname()+"分数:"
 +evaluate.getResult()+"评价:"+evaluate.getContent()==null?"暂无评价":evaluate.getContent());
 这样就会报错。

4.button.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT)); 设置按钮透明颜色


2017.3.27 记载


1.点击退出键,销毁程序,销毁所有的活动。退出应用程序的实现:可以自己写个方法

例如网上有好几种写法:
 /*finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);*/
 网上查了很多方法,最常用的这个方法啊,效果都只能是退出当前活动回到上一个活动,而且推出之前还会黑屏一下,极为不爽啊。所以还是用最开始的方法来做这个功能,写一个活动栈,退出的时候将全部活动都移出就行了,具体代码已经总结好了
看博客:点击打开链接
  

2.点击back返回上一个activity(销毁当前activity)

默认直接调用finish方法


3. System.exit(0)和System.exit(1)区别

android源码:
  public static void exit(int status) {  
untime.getRuntime().exit(status);  
  }  
  这个方法是用来结束当前正在运行中的java虚拟机
System.exit(0)这个status=0是将你的整个虚拟机里的内容都停掉了
System.exit(1)这个status=1是用来表示这个程序是非正常退出。

4.弹框事件

  new AlertDialog.Builder(BaseActivity.this).setTitle("系统提示")
                .setMessage("确定要退出吗?")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        
                    }
                }).setNegativeButton("返回", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                return;
            }
        }).show();


2017.3.28 记载



1.做MPAndroidChart的使用

demo:再从数据库拿数据出来,导入 在做的过程中有很多问题,一是没接触过,得慢慢看源代码,二是本身逻辑方面需要改动很多,三是报错的次数蛮多的,不过直到下午这些问题都慢慢的得到解决了。demo也上传到GitHut上了。


2.实现当进入APP端时进入缓冲界面的效果图片

http://blog.csdn.net/x605940745/article/details/23381443


2017.3.29

1.Spinner选中文字颜色和下拉颜色不同的设置

   TextView tv = (TextView) view;
   tv.setTextColor(Color.WHITE);

2.修正小Bug


(1)更新密码框隐形显示(解决)

android:inputType="textPassword"

(2)填写账户的时候,需要点击两下才能出现清空图标(解决)

setOnFocusChangeListener()和onFocusChange(View v, boolean hasFocus)

(3)除了第一个MainActivity没有系统标题外,其他都有,需要清除其他的标题文字。

   在AndrandrManifest中修改各个注册的activity属性
   android:label="@string/title_null"(title_null值为"")


(4)显示评价列表时候,头像和评价文字不在一个水平线上,呈现垂直分布

将需要改动的空间放入LinearLayout布局中,并选择水平分布horizontal


(5)尝试换一张模糊登录背景图

   要么直接换成模糊照片,要么使用高斯模糊算法,导包
    compile 'net.qiujuer.genius:blur:2.0.0-beta4',相应的使用方法稍微了解了一下。

(6)EditText中的光标和下划线会变成粉红色,如何去除

android:textCursorDrawable="@null"  去掉粉红色光标
android:background="@null"           去掉粉红色下划线


2017.3.30 记载


1.ListView子项计数的问题和上下刷新出现的Bug,采取折中的办法,在服务端进行处理,再返回数据到android客户端

for(int i=0;i<strings.size();i++){StringBuffer sb = new StringBuffer(strings.get(i));sb.insert(0, (i+1)+".");strings.set(i, sb.toString());//效率比str的subString方法效率高得多}


2.listView后加控件的问题(因为用户会不断刷新,所以直接加控件会出现显示不出来的问题)

解决方案:直接加入在listView最后面
LayoutInflater infla = LayoutInflater.from(this);        View footView = infla.inflate(R.layout.add_evaluate_button, null);        listView.addFooterView(footView, null, true)

addHeaderView()方法:主要是向listView的头部添加布局
addFooterView()方法:主要是向listView的底部添加布局


      item 内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button、imagebutton等控 件抢走,从而导致在listview设置了onitemclick事件后不会被触发。解决方法是在初始化item的时候屏蔽掉其内部button等控件的 焦点获取
setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 
这样就能阻塞字控件抢夺焦点,listview的onitemclick就能被正确触发,同时对item内部的button等控件也没有影响,他们在被点击时照样可以触发自身的点击事件。

学习网站:点击打开链接
学习网站:点击打开链接


3.listview迭代出来的控件外部监听出异常

ListView和其它能触发点击事件的widget无法一起正常工作的原因是加入其它widget后,
ListView的itemclick事件将无法触发,被其它widget的click事件屏蔽。
在ListView加入的控件全局没有设置一个属性就可以了。
android:descendantFocusability="blocksDescendants"


2017.4.1 记载

1.androidAPP修改中文名称后,显示不出名字来

解决:问题在于,我在各个Activity下的lable标签都设置为空字符串了(前期为了解决活动标题的问题设置的)。activity中的lable优先级高于application中lable的优先级。当activity中没有定义lable标签时,application中的lable才会在activity lable标签中生效。去掉lable标签就可以了。


2.TextView中为什么会在有些行尾出现"..."字符

解决:手机的ROM问题,认真review了代码,发现如下的代码:
mIntroView = (TextView) findViewById(R.id.description);mIntroView.setEllipsize(TruncateAt.END);

3.出现错误:Installation error: INSTALLFAILEDINSUFFICIENT_STORAGE Please check logcat output for more details. Launch canceled!

解决:机器内存的瓶颈,当apk大于我们的机器内存时,将sdk的内存设置大一点儿就好了


4.开机运行服务器后,app连不上后台服务器

解决:通过检测发现是因为WIFI没开,因为WIFI没开,系统网络没有给wifi分配子网IP,导致app找不到本地服务器,开一下WIFI重启就好了。

 5.Android Studio 配置 androidAnnotations框架详细步骤:

解决: http://www.cnblogs.com/caobotao/p/5138935.html


2017.4.5 记载


2.Android string中translatable作用

意思就是不管系统是什么语言,它都只显示xx,通常用来表示定义一些开关项。


3.焦点管理器focusManager

hideFocus、showFocus、setFocus、getFocus作用也就是字面意思了。
关于FocusManager的使用介绍:http://edu.gamfe.com/tutor/d/18178.html
当用户按 Tab 键在 Flash 应用程序中导航时或在应用程序中单击时,FocusManager 类会确定接收输入焦点的组件,我想这个3D相机应该就是通过这个实时去获取焦点,来改变视觉角度的。个人猜想


4.Android string中msgid=""作用

在源码中的id都会生产msgid,系统自己产生的随机生成的,随机的目的是为了不重复。然后每个字符串有个id,便于翻译。

5.android点击ctrl键无法在关键字变量上跳转,我就想了这儿可能不说android studio的项目,就翻了一下目录结构,才发现这是用intellij idea写的项目,我又去下了这个软件,花了大量的时间进行相关的配置,最后才导入进来可以使用的,但是导入进来是一堆错误,我不期盼它能运行起来,就慢慢理解代码吧。


6使用Serializable和Parcelable两种方式传递Object

Android的Intent之间传递对象有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key,Object)。前者实现了Serializable接口,而后者实现了Parcelable接口。
intent.putStringArrayListExtra("ListString",stringList);//传递List数据

7.IndicatorControlContainer聚焦组件

STATE_IDLE:空闲状态拍照 STATE_FOCUSING:自动正在聚焦,可聚焦完拍照,否则聚焦失败等有许多属性作用
STATE_FOCUSING_SNAP_ON_FINISH、STATE_SUCCESS、STATE_FAIL

8.Android多媒体开发

学习链接:http://blog.csdn.net/reiliu/article/details/9060557
可以用开源MediaFramework来进行开发,OpenCore是Android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现。当然这只是一种方式,有很多开发平台的。这部分完全没看懂

9.Android提供Media API给开发人员使用

MediaPlayer、MediaRecorder、Android MediaAPIs,目前了解的有这些API
Android为音频和视频操作分别提供了MediaPlayer类和MediaRecorder类这两个工具类
图像:


10.播放器监听事件setOnPreparedListener(new OnPreparedListener());

其中提供了可以设置比方暂停停止等时间的方法。

11.简单的3D相机过程

(1)在android上创建OPenGL平面。(2)创建缓冲区。(3)创建着色器来负责单点绘制。(4)最后画出形状和图形,暂时知道有这几方面的内容。


2017.4.6 记载

1.感觉在android学习方面还不够,网上查了一下,下载《Android开发艺术探索-任玉刚版》PDF下来看看



2.《软件框架设计的艺术》中写道"向后兼容"的思想

旧版本的API可以在新版本API上运行,几乎每一个API设计者都是希望做到这种地步,但是也意味着重要性和复杂度。


**3.通配符(正则表达式)的使用

(1)\b:元字符,代表着单词的开头或结尾   (\bhi\b)
(2),.是另一个元字符,匹配除了换行符以外的任意字符(\bhi\b.*\bhob\b)   这个时候的*代表数量
(3)\d是个新的元字符,匹配一位数字(0\d\d\d-\d\d\d\d\d或0\d{2}-\d{5}){重复次数}
(4)\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
(5)\w匹配字母或数字或下划线或汉字等(\ba\w*\b)
(6)\d+匹配1个或更多连续的数字。这里的+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次,?重复零次或一次()
(7)元字符^匹配字符串的开始和$都匹配字符串的结束(^\d{5,12}$)
(8)想查找元字符本身的话,用转义符\(\*\.\,\\)
(9)[aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)()
(10)[0-9]代表的含意与\d就是完全一致,同理[a-z0-9A-Z_]也完全等同于\w()
(11)分枝条件‘|’,意思就是或。(例:0\d{2}-\d{8}|0\d{3}-\d{7}  \(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8})
(12)分组'()':表示整体(例子:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))
(13)反义:
\W:匹配任意不是字母,数字,下划线,汉字的字符
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配不是单词开头或结束的位置
[^x]:匹配除了x以外的任意字符
[^aeiou]:匹配除了aeiou这几个字母以外的任意字符
(14)后向引用用于重复搜索前面某个分组匹配的文本(\b(\w+)\b\s+\1\b:(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,最后那个\1重新又匹配一次)
(15)负向零宽断言;\b\w*q(?!u)\w*\b()
(16)小括号的另一种用途是通过语法(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。
(17)贪婪匹配:a.*b搜索到aabab,懒惰匹配:a.*?b搜索到aab




4.Android Studio 不自动弹起代码提示功能解决办法 do not auto popup code completion

我升级了一下androidstudio后出现的这个问题,后来看到有个PowerMode,取消之后一切正常,看来是省电模式下禁用了这些功能,通过反射来实现代码的autoComplete是会增加CPU运算量


2017.4.7 记载

1.通过广播检查网络状态(移动网络或者WIFI)是否可用

http://blog.csdn.net/mxiaoyem/article/details/50708052
http://blog.csdn.net/caijunjun1006/article/details/9698461


http://blog.csdn.net/u011546655/article/details/42583819
http://blog.csdn.net/hejie322/article/details/8786402


2.写一个检查网络状态的工具类

已经上传到博客;
地址:http://blog.csdn.net/mr_li13/article/details/69547685

3.android多媒体为什么需要缓冲区

我们在开发过程中,会需要用到数据实时推送端,推送端将音视频数据推送到流媒体服务器或者cdn,再由流媒体服务器/CDN进行视频的转发和分发,提供给客户端进行观看。在这些网络条件下,如何做到能够做到灵活、低延时直播,我们这个时候就需要引入发送缓冲区和丢帧策略两种功能,保证推送的实时和数据的有效。
0 0
原创粉丝点击