牛客题库——Android专项练习解析1

在这里插入图片描述

答案显而易见,这题会错的,都是没有真正写过安卓代码的。

在这里插入图片描述

  • Log信息分为6个级别::Assert(断言)、Debug(调试)、Error(错误)、Info(信息)、Verbose(详细)、Warning(警告)
  • 除了Button之外,布局、文本、图片,下拉框、复选框、编辑框、菜单、对话框等都可以设置监听器。
  • AutoCompleteTextView ,自动补全(自动完成、自动提示),常见于搜索时的自动补全,例如谷歌搜索,电子词典
  • View是所有控件的基类,即父类。

在这里插入图片描述

setRequestMethod方法 属于HttpURLConnection类,从完整方法定义可知参数为String类型。

	public void setRequestMethod(String method) throws ProtocolException {...}

getResponseCode方法也是属于HttpURLConnection类,从注释可知返回的是连接网络的响应码。

 /* 
  * @return the HTTP Status-Code, or -1
  */
  public int getResponseCode() throws IOException {...}

setDoInput方法也属于URLConnection类,
URLConnection类是HttpURLConnection类的父类。

*
   * @see     java.net.URLConnection#getDoInput()
   * @see     java.net.URLConnection#setDoInput(boolean)
   */
  protected boolean doInput = true;
  ...
  ...
  public void setDoInput(boolean doinput) {
      if (connected)
          throw new IllegalStateException("Already connected");
      doInput = doinput;
  }

setDoOutput方法也属于URLConnection类,
URLConnection类是HttpURLConnection类的父类。

    /*
     * @see     java.net.URLConnection#getDoOutput()
     * @see     java.net.URLConnection#setDoOutput(boolean)
     */
    protected boolean doOutput = false;
    ...
    ...
    public void setDoOutput(boolean dooutput) {
        if (connected)
            throw new IllegalStateException("Already connected");
        doOutput = dooutput;
    }

在这里插入图片描述

  • M是逻辑模型
  • V是视图模型,对应于android里面的View
  • C是控制器,android中的activity实现了这个职责

在这里插入图片描述

ScrollView只能添加一个组件,可以是单一的组件,也可以是一个布局包裹着的复杂的层次结构!

在这里插入图片描述

  • SharedPrefrences 以 xml 数据格式将数据持久化,一般用于存储配置信息
  • SQLite数据库
  • File 各种文件保存,保存于手机的存储中
  • Bundle,通过Intent传递数据,不是持久化存储数据,按理说应该是可以暂时存储,也算是存储吧,这点有些模糊。

在这里插入图片描述

  • 在android 中主线程是ui线程一切的界面操作都是在主线中完成的,如果在非主线程中操作ui将会报错。
  • 同时执行多个AsyncTask默认是串行执行的。
  • AsyncTask必须在UI线程中创建。
  • 内部默认的线程是由 SerialExecutor创建 。

AsyncTask中有两个线程池,一个是SerialExecutor 一个是 threadPoolExecutor,它们的区别在于,第一个线程池用于排队,第二个线程池用于执行指定的任务,在最初的 AsyncTask 中只支持串行工作,后在3.0之后加入了executeOnExecutor方法,该方法提供了并行操作,一般而言用法为 new AsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,"…");
所以说,D错误点在于并不是newFixedThreadPool,而是直接通过new ThreadPoolExecutor来配置的,其中区别在于,new FixedThreadPool只需要设置线程数,其最大的线程数与核心线程数一致,无超时等待机制。而AsyncTask生成的线程池核心线程数是 2和(4和 Cpu核心数-1中最小的)中最大的一个,且有30S的超时时间。
至于SerialExecutor实际上只是起到了个排队的作用,它的内部使用了一个队列,在一个同步方法内不断的将队列的任务加入到 threadPoolExecutor执行。

在这里插入图片描述

  • 如果listview只是一种类型,那么只需要重写a,和getview()即可,但是这里已经写明了,有imageview和textview,所以需要b来得到当前的view id号,和c得到当前view的类型 至于最后一个也是需要的,这些方法都是非常有必要的。
  • CD对于Listiew来说,getViewTypeCount 和getItemViewType主要用于为不同的列表项目提供不同的视图view

在这里插入图片描述

CharSequence 是一个接口,其子类不一定会序列化,比如CharArray 。

在这里插入图片描述

  • BroadcastReceiver的生命周期,从对象调用它开始,到onReceiver方法执行完成之后结束。
  • 每次广播被接收后会重新创建BroadcastReceiver对象,并在onReceiver方法中执行完就销毁。
  • 如果BroadcastReceiver的onReceiver方法中不能在10秒内执行完成,Android会出现ANR异常。所以不要在BroadcastReceiver的onReceiver方法中执行耗时的操作。如果需要在BroadcastReceiver中执行耗时的操作,可以通过Intent启动Service来完成。但不能绑定Service
  • 创建BroadcastReceiver,只需要创建一个BroadcastReceiver的子类然后重写onReceive (Context context, Intentintent)方法即可。

迷茫,是青春最真实的状态;但奋斗,才是青春的主基调;努力是打败焦虑的绝好方法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值