零碎的知识点

2018-09-11  本文已影响176人  第四风111

计算机网络


http/1.1协议的8种请求方式

head、post、get、put、delete、connect、option、trace

请求状态码responseCode含义:

java


java修饰符作用范围

java修饰符

android


viewpager+fragment配合使用的生命周期

  ViewPager加载时同时加载上一个、当前、下一个三个item。即会调用onAttach--onCreate--onCreateView--onViewCreated--onActivityCreated--onStart--onResume生命周期,而其他的fragment若被初始化过了,则会调用onPause--onStop--onDestoryView。
  ViewPager中的Fragment生命周期总是相邻的三个item同时进行的。因此,如果想在fragment显示的时候加载网络数据(懒加载),通过生命周期来做文章是很难实现的,推荐重写setUserVisibleHint()。

懒加载

  什么叫懒加载呢,简单来说就是你需要的时候才去加载它,这样提高了运行速度。

安卓中的懒加载

  在android的项目开发过程中viewPager的使用很频繁;但是viewPager特殊的预加载机制导致viewPager的网络请求会有异常;即当前页面加载过程中,不可见的预加载Fragment页面也会走网络请求,这样会极大的影响到安卓app的运行效率。
1:setUserVisibleHint(boolean isVisibleToUser)的方法就很重要,根据方法名来看当前页面是否可见, 里面的boolean值就是判断当前页面是否可见的变量,所以大家可以isVisibleToUser来判断当前页面的状态,isVisibleToUser =true的时候代表当前页面可见,false 就是不可见,所以大家可以参考一下这个状态,根据这个状态来处理懒加载。
2:提醒:setUserVisibleHint(boolean isVisibleToUser) 实在Fragment OnCreateView()方法之前调用的。

LruCache的使用

LruCache是Android 3.1所提供的一个缓存类,所以在Android中可以直接使用LruCache实现内存缓存。而DisLruCache目前在Android 还不是Android SDK的一部分,但Android官方文档推荐使用该算法来实现硬盘缓存。


广播是否可以请求网络?

从4.0 开始所有的网络请求都需要在线程中,广播请求网络同理 开启线程在线程中请求网络

引起anr的时间限制是多少?

Activity----->5秒
BroadcastReceiver----->10秒
Service----->20秒

Android为什么引入Parcelable?

Java提供了Serializable接口方式实现序列化,但这种方式效率较低。因此,安卓提供Parcelable接口以实现更加高效的序列化方式。

进程间通信的方式?

1)Bundle
2)文件共享
3)AIDL
4)Messager
5)ContentProvider
6)Socket

关于startActivityForresult

  1. 作用:一个activity打开另一个activity获取数据后,新activity关闭
  2. 用法

MainActivity:
1)startActivityForResult(intent,int code),code用于标识哪个activity返回的数据;
2)重写onActivityResult(int requestCode,int resultCode,intent),requestCode就是上面那个code,resultCode用于判断回调的数据是否成功了。
NewActivity:
setResult(int resultCode),setResult(int resultCode, Intent),resultCode回调状态,就是上面的resultCode,Intent数据

  1. 失效:如果NewActivity的launchMode是singleInstance或singleTask,就不行。

Android中为什么主线程不会因为Looper.loop()里的死循环阻塞?

主线程确实是阻塞的,不阻塞那APP怎么能一直运行,所以说主线程阻塞是一个伪命题,只不过是没有弄明白既然阻塞了,为什么还能调用各种声明周期而已.
调用生命周期是因为有Looper,有MessageQueue,还有沟通的桥梁Handler,通过IPC机制调用Handler发送各种消息,保存到MessageQueue中,然后在主线程中的Looper提取了消息,并在主线程中调用Handler的方法去处理消息.最终完成各种声明周期.

Android 动画

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/a_0"
android:duration="100" />
<item
android:drawable="@drawable/a_1"
android:duration="100" />
<item
android:drawable="@drawable/a_2"
android:duration="100" />
</animation-list>

ImageView animationImg1 = (ImageView) findViewById(R.id.animation1);
        animationImg1.setImageResource(R.drawable.frame_anim1);
        AnimationDrawable animationDrawable1 = (AnimationDrawable) animationImg1.getDrawable();
        animationDrawable1.start();

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@[package:]anim/interpolator_resource"
android:shareInterpolator=["true" | "false"] >
<alpha
android:fromAlpha="float"
android:toAlpha="float" />
<scale
android:fromXScale="float"
android:toXScale="float"
android:fromYScale="float"
android:toYScale="float"
android:pivotX="float"
android:pivotY="float" />
<translate
android:fromXDelta="float"
android:toXDelta="float"
android:fromYDelta="float"
android:toYDelta="float" />
<rotate
android:fromDegrees="float"
android:toDegrees="float"
android:pivotX="float"
android:pivotY="float" />
<set>
...
</set>
</set>
//单独的动画不需要set便签

Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.alpha_anim);
img = (ImageView) findViewById(R.id.img);
img.startAnimation(animation);

ArrayList与LinkedList区别(三点)

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

牛客网


AlertDialog.Builder builder = new AlertDialog.Builder(context);
 ProgressDialog dialog = new ProgressDialog(context);
上一篇 下一篇

猜你喜欢

热点阅读