Android复习强化笔记(二)

本文介绍了Android开发中的几个关键技术和概念,包括String、StringBuffer和StringBuilder的区别,WebView的基本使用方法,APPWidget的应用,AsyncTask的工作原理及HTTP协议在网络访问中的作用。此外还探讨了一些选择题涉及的知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:String、StringBuffer和StringBuilder之间的区别

String类型与StringBuffer类型主要性能区别其实在于String是不可变的对象,因此在每次改变String对象的时候其实都等于生成一个新的String对象,然后将新指针指向新的String对象。

StringBuffer是一个可变对象,但对它进行修改的时候不会像String那样重新建立对象。(线程安全)

StringBuilder是一个可变对象,它跟StringBuffer相比不是线程安全的,一般在单个线程操作的时候,速度比StringBuffer快得多。(线程非安全)

StringBuffer支持并发操作,线程安全,适合在多线程中使用;StringBuilder不支持并发操作,线程不安全,不适合在多线程中使用。

 

二:WebView

http://www.open-open.com/lib/view/open1431569835951.html

基本使用:

    1:在XML布局中添加WebView控件

    2:在Manifest文件中添加权限:<uses-permission android:name="android.permission.INTERNET"/>

    3:在java代码中获得该WebView的一个引用,同时使用loadUrl()加载一个网址

            如:webView.loadUrl("http://www.baidu.com");

                    webView.loadUrl("file://android_asset/XX.html");

    4:如果不想要打开一个系统浏览器,则需要为WebView设置一个WebViewClient,并重写方法

webView.setWebViewClient(new WebViewClient(){
    public boolean shouldOverrideUrlLoading(WebView view,String url){
       view.loadUrl(url);
       return true;
    }
});

5:设置Java脚本是否可用

webView.getSettings().setJavaScriptEnable(true);

webView.getSettings().setJavaScriptEnable(false);

 

利用隐式Intent打开浏览器并加载指定网页:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

 

 

三:APPWidget

http://www.cnblogs.com/qianlifeng/archive/2011/03/26/1996407.html

http://www.cnblogs.com/youxilua/archive/2011/09/24/2189465.html

 

 

四:AsyncTask

http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html

在Android中实现异步消息机制的方法:Handler和AsyncTask

execute():执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。

onPreExecute():这个方法会在后台任务开始执行之前完成,用于进行一些界面的初始化操作,比如显示一个进度条对话框等。

doInBackground():这个方法中的所有代码都会在子线程中运行,我们应该在这里去处理所有的耗时任务。

onProgressUpdate():当在后台任务中调用publishProgress()方法后,这个方法就会很快被调用,方法中携带的参数就是在后台任务中传递过来的。在这个方法中可以对UI进行操作,利用参数中的数值就可以对界面元素进行相应的更新。

onPostExecute():当后台任务执行完毕并通过return语句返回时,这个方法就很快会被调用。返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI操作。

 

五:使用HTTP协议访问网络

http://blog.youkuaiyun.com/itachi85/article/details/50982995

工作原理:客户端向服务器发出一条HTTP请求,服务器收到请求后返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。

 

HTTP协议的主要特点

            1:支持C/S模式

            2:简单快速(客户端向服务器请求时,只需传送请求方法和路径)

            3:灵活(HTTP运行传送任意类型的数据对象)

            4:无连接:(无连接的含义是每次连接请求只处理一个请求。服务端处理完客户请求后,并收到客户端的应答,即断开连接。采用这种方式可以节省传输时间)

            5:无状态:HTTP协议是无状态的协议。无状态是指协议对于事物的处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则必须重传,这样可能导致每次连接传达的数据量增大。另一方面,服务器不需要先前先前信息时它的应答就快了。

 

在Android上发送HTTP请求的方式:HttpURLConnection和HttpClient

1:HttpURLConnection

    a、首先获得HttpURLConnection实例

URL url = new URL("http://www.baidu.com");
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();

    b、设置HttpURLConnection的方法(GET/POST)

        GET表示希望从服务器那里获得数据,而POST则表示希望提交数据给服务器&。

httpURLConnection.setRequestMethod("GET");
httpURLConnection.setRequestMethod("POST");

    c、获得服务器返回的输入输出流,对输入流/输出流进行读/写操作

    d、调用disconnect()方法将这个http连接关闭掉

 

2:HttpClient(一个接口)

http://www.jb51.net/article/73371.htm

GET方式  

  a、创建一个DefaultHttpClient实例

            HttpClient httpClient = new DefaultHttpClient();

      b、创建一个HttpGet对象,并传入目标的网络地址,然后调用HttpClient的execute()方法

            HttpGet httpGet = new HttpGet("http://www.baidu.com");

            HttpResponse httpResponse =  httpClient.execute(httpGet);

      c、执行execute()方法后会返回一个HttpResponse对象,服务器所返回的所有信息就会包括在这里面。通常情况下我们就会取出服务器返回的状态码,如果等于200就说明请求和响应都成功了。

        if(httpResponse.getStatusLine().getStatusCode==200){

                    //请求和响应都成功了

          }

    POST方式

a、创建一个DefaultHttpClient的实例

    HttpClient httpClient = new DefaultHttpClient();

b、创建一个HttpPost对象,并传入目标的网络地址

    HttpPost httpPost = new HttpPost("http://www.baidu.com");

c、创建一个Entity对象,并将数据存入Enitity中。然后调用httpPost的setEntity()方法将构造好的Entity传进去。

       httpPost.setEntity(xxxx);

        HttpResponse httpResponse = httpClient.execute(httpPost);

d、执行execute()方法后悔返回一个HttpResponse对象,服务器所返回的所有信息就会包含在这里面。通常情况下我们都会先取出服务器所返回的状态码,如果等于200就说明请求和响应都成功了

    if(httpResponse.getStatusLine().getStatusCode()==200){

        //请求和响应成功

  }

 

 

 

三:选择题

1:WebView中可以用来处理js中警告、确认等对话框的是:WebChromeClient

 

2:LocalManager获取位置信息的途径下列说法正确的是:

       a、 GPS定位更加精确,缺点是只能在户外使用。

        b、获取用户位置信息,我们可以同时使用其中一个,也可以同时使用两个

        c、GPS定位耗电严重,并且返回用户位置信息的速度远不能满足用户需要

 

3:android的MVC模式

M是逻辑模型。

V是试图模型,对应XML文件

C是控制模型,对应Activity

 

4:Android的自动恢复功能能够完成:恢复备份设置和数据来重新安装程序。

 

5:android的动画类型

帧(Frame)动画、补间动画(Tween)、属性动画

 

6:关于ServiceConnection接口的onServiceConnected()方法的触发条件描述正确的是:

bindService()方法成功调用的同时onBind()方法返回IBinder对象。

 

7:DVM指dalivk的虚拟机,每一个安卓应用程序都在它自己的进程中运行,都拥有一个独立的Dalivk虚拟机实例。而每一个DVM都是Linux中的一个进程,所以说可以认为是同一个概念。

 

8:IntentService和Service的区别

IntentService是继承Service的,那么它包含了Sevice的全部特性,当然也包含Service的生命周期。IntentService与Service不同的是,IntentService在执行onCreate()方法时,内部开了一个线程,去执行耗时操作。

 

9:Android系统对下列哪些对象提供了资源池:Messae与AsyncTask

 

10:下面哪条语句可以构造正确的对话框( B D)

B:AlertDialog.Builder builder = new AlertDialog.Builder(context);

.D:ProgressDialog dialog = new ProgressDialog(context);

 

11:下列哪些情况下系统会弹出Froce Close对话框

应用运行时抛出了OutOfMemoryError,
应用运行时抛出了RuntimeException

转载于:https://my.oschina.net/FlyinTang/blog/752617

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值