Android--面试中遇到的问题总结(二)

一、开发中都使用过哪些框架、平台

EventBus(事件处理)  
xUtils(网络、图片、ORM)
JPush(推送平台)
友盟(统计平台)
有米(优米)(广告平台)
百度地图
bmob(服务器平台、短信验证、邮箱验证、第三方支付)
阿里云 OSS(云存储)
ShareSDK(分享平台、第三方登录)
Gson(解析 json 数据框架)
imageLoader (图片处理框架)
zxing (二维码扫描)
anroid-asyn-http(网络通讯)
DiskLruCache(硬盘缓存框架)
Viatimo(多媒体播放框架)
universal-image-loader(图片缓存框架)
讯飞语音(语音识别)

二、怎样对 android 进行优化?

对 listview 的优化。
对图片的优化。
对内存的优化。
具体一些措施
尽量不要使用过多的静态类 static
数据库使用完成后要记得关闭 cursor
广播使用完之后要注销

三、即时通讯是是怎么做的?

使用asmark 开源框架实现的即时通讯功能.该框架基于开源的 XMPP 即时通信协议,采用 C/S 体系结构,通过 GPRS 无线网络用 TCP 协议连接到服务器,

以架设开源的Openfn’e 服务器作为即时通讯平台。

客户端基于 Android 平台进行开发。负责初始化通信过程,进行即时通信时,由客户端负责向服务器发起创建连接请求。系统通过 GPRS 无线网络与 Internet 

网络建立连接,通过服务器实现与Android 客户端的即时通信脚。

服务器端则采用 Openfire 作为服务器。 允许多个客户端同时登录并且并发的连接到一个服务器上。服务器对每个客户端的连接进行认证,对认证通过的客户端创建

会话,客户端与服务器端之间的通信就在该会话的上下文中进行。

 四、

android fragment和activity的区别


  1. Fragment是到Android3.0+ 以后,Android新增了Fragments,在没有 Fragment 之前,一个屏幕只能放一个 Activity。这是一个起源时间大家要知道是什么时候开始引入的。
  2. .Activity 代表了一个屏幕的主体,而Fragment可以作为Activity的一个组成元素。
    一个Activity可以有若干个(0或n)Fragment构成。你可以把Fragment想象成Activity中的一个控件,只不过相对于一般控件,Fragment与Activity联系更为紧密,随着Activity的生命周期变化,Fragment也随之相应不同的生命周期函数。
    Fragment 从功能上讲相当于一个子活动(Activity),它可以让多个活动放到同一个屏幕上,也就是对用户界面和功能的重用,因为对于大屏设备来说,纯粹的 Activity 有些力不从心。
  3. Fragment 像是一个子活动,但是 Fragment 不是 Activity 的扩展,因为 Fragment 扩展自 android.app 中的 Object,而 Activity 是 Context 的子类。Fragment 有自己的视图层级结构,有自己的活动周期,还可以像活动一样响应后退按钮,Fragment 还有一个用作其初始化参数的包(Bundle),类似 Activity,Fragment 也可由系统自动保存并在以后还原。当系统还原 Fragment 时,它调用默认的构造函数(没有参数),然后将此Bundle还原到新创建的 Fragment 中,所以无论新建还是还原 Fragment,都要经过两个步骤:(1)调用默认构造函数(2)传入新的或者保存起来的Bundle。
  4. 一个Activity可以运行多个 Fragment,Fragment 切换时,由 FragmentTransaction 执行,切换时,上一个 Fragment 可以保存在后退栈中(Back Stack),这里的后退栈由 FragmentManager 来管理,注意 Fragment 和 Activity 的后退栈是有区别的:Activity 的后退栈由系统管理,而 Fragment 的后退栈由所在的Activity 管理。
  5. Fragment不能脱离Activity而存在,只有Activity才能作为接收intent的载体。其实两者基本上是载体和组成元素的关系。
  6. Fragment用来描述一些行为或一部分用户界面在一个Activity中,你可以合并多个fragment在一个单独的activity中建立多个UI面板,同时重用fragment在多个activity.你可以认为fragment作为一个activity中的一节模块fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity.一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity而影响,举个例子吧,当activity暂停,那么所有在这个activityfragments将被destroy释放。然而当一个activity在运行比如resume时,你可以单独的操控每个fragment,比如添加或删除。不过因为FragmentActivity的生命周期都比较复杂,我们分别对比下:创建一个fragment你必须创建一个Fragment的子类或存在的子类,比如类似下面的代码

    public static class AndroidFragment extends Fragment{
        @Override
        public View onCreateView(LayoutInflaterinflater, ViewGroup Container,
                             Bundle savedInstanceState) { 
               return inflater.inflate(R.layout.android_fragment,container, false);
        }
   }

 

     Fragment类的一些代码看起来有些像Activity为了让大家了解清楚,Android开发网给大家整理下          Fragment的生命周期大家可以参考一下网上关于生命周期的介绍                     http://www.cnblogs.com/purediy/p/3276545.html,部分类似Activity的,我们详细解释

onCreate()
当fragment创建时被调用,你应该初始化一些实用的组件,比如在fragment暂停或停止时需要恢复的

onCreateView()
当系统调用fragment在首次绘制用户界面时,如果画一个UI在你的fragment你必须返回一个View当然了你可以返回null代表这个fragment没有UI.

那么如何添加一个Fragment到Activity中呢? Activity的布局可以这样写

<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.android.cwj.ArticleListFragment"
           android:id="@+id/list"
           android:layout_weight="1"
           android:layout_width="0dp"
           android:layout_height="match_parent" />
    <fragment android:name="com.android.cwj.ArticleReaderFragment"
           android:id="@+id/viewer"
           android:layout_weight="2"
           android:layout_width="0dp"
           android:layout_height="match_parent" />
</LinearLayout>


转载于:https://www.cnblogs.com/chaoyu/p/6436773.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值