[ 登录注册 ]

android

安卓面试题目大全

2016-03-17 09:31:04 admin 返回上一页

 

1. 

请描述下

Activity

的生命周期。

 

 

 

 

 

2. 

如果后台的

Activity

由于某原因被系统回收了,如何在被系统回收之前保存当前状

 

调用

onSaveInstanceState(); 

3. 

如何将一个

Activity

设置成窗口的样式。

(Edited by Sodino) 

 

单你只需要设置

 

一下

Activity

的主题就可以了在

AndroidManifest.xml 

中定义

 

Activity

 

地方一句话:

 

+++-- 

 

Xml

代码

 

 

  

1.

 

android :theme="@android:style/Theme.Dialog"  

  

 

2.

 

  

 

3.

 

android:theme="@android:style/Theme.Dialog"  

  

 

4.

 

  

 

 

这就使你的应用程序变成对话框的形式弹出来了,或者

 

 

Xml

代码

 

 

  

1.

 

android:theme="@android:style/Theme.Translucent"  

  

 

2.

 

  

 

3.

 

android:theme="@android:style/Theme.Translucent"  

  

 

4.

 

  

 

就变成半透明的,

[

友情提示

-.-]

类似的这种

activity

的属性可以在

android.R.styleable 

类的

AndroidManifestActivity 

方法中看到,

AndroidManifest.xml

中所有元素的属性的介绍都可

以参考这个类

android.R.styleable 

 
 

上面说的是属性名称,具体有什么值是在

android.R.style

中可以看到,比如这个

"@android:style/Theme.Dialog" 

就对应于

android.R.style.Theme_Dialog ,

'_'

换成

'.' 

<--

注意:这个是文章内容不是笑脸)就可以用在描述文件中了

,

找找类定义和描述文件中的对

应关系就都明白了。

 

 

 

 

 

4. 

如何退出

Activity?

如何安全退出已调用多个

Activity

Application? 

 

 

 

 

5. 

请介绍下

Android

中常用的五种布局。

 

 

 

 

 

6. 

请介绍下

Android

的数据存储方式。

(Edited by Sodino) 

 

 

7. 

请介绍下

ContentProvider

是如何实现数据共享的。

(Edited by Sodino) 

 

 

SharedPreferences

:用来存储

”key

-value pa

ires“

格式的数据,它是一个轻量级的键值存储

机制,只可以存储基本数据类型。

  

 

文件存储:通过

FileInputStream

FileOutputStream

对文件进行操作。在

Android

中,文

件是一个应用程序私有的,一个应用无法读写其他应用程序的文件。

  

 

3.SQLite

数据库存储:

Android

提供的一个标准数据库,支持

SQL

语句。

  

网络:通过网络来存储和获得数据。

 

 

攻牙机

 

 

ContentProvider

:是所有应用程序之间数据存储和检索的一个桥梁,它的作用就是使得各

个应用程序之间实现数据共享。

它是一个特殊的存储数据的类型,

它提供了一套标准的接口

用来获取数据、

操作数据。

系统也提供了音频、

视频、

图像和个人信息等几个常用的

Content 

Providers

。如果你想公开自己的私有数据,可以创建自己的

Content Provider

类,或者当你

对这些数据拥有控制、

写入的权限时讲这些数据添加到

Content Provider

中实现共享。

外部

访问通过

ContentResolver

去访问并操作这些被暴露的数据。

 

组织数据主要包括:

存储数据,

读取数据,以数据库的方式暴露数据。

数据的存储需要根据

设计的需求,选择合适的存储结构,

首选数据库,

当然也可以选择本地其他文件,

甚至可以

是网络上的数据。

数据的读取,

以数据库的方式暴露数据这就要求,

无论数据是如何存储的,

数据最后必须以数据的方式访问。

  

 

 

 

 

8. 

如何启用

Service

,如何停用

Service

(Edited by Sodino) 

 

 

 

一.步骤

 

第一步:继承

Service

 

 
 

public class SMSService extends Service { } 

第二步:在

AndroidManifest.xml

文件中的

<application>

节点里对服务进行配置

<service android:name=".DemoService" /> 

二.

Context.startService()

Context.bindService 

服务不能自己运行,

需要通过调用

Context.startService()

Context.bindService()

方法

启动服务。这两个方法都可

 

以启动

Service

,但是它们的使用场合有所不同。

 

1.

使用

startService()

方法启用服务,调用者与服务之间没有关连,即使调用者退出了,

服务仍然运行。

 

使用

bindService()

方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也

就终止。

 

2.

采用

Context.startService()

方法启动服务,在服务未被创建时,系统会先调用服务的

onCreate()

方法,

 

接着调用

onStart()

方法。如果调用

startService()

方法前服务已经被创建,多次调用

startService()

方法并不会导致多次创建服务,但会导致多次调用

onStart()

方法。

 

采用

startService()

方法启动的服务,

只能调用

Context.stopService()

方法结束服务,

务结束时会调用

onDestroy()

方法。

  

  

3.

采用

Context.bindService()

方法启动服务,在服务未被创建时,系统会先调用服务的

onCreate()

方法,

 

接着调用

onBind()

方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先

调用服务的

onUnbind()

方法,接着调用

onDestroy()

方法。如果调用

bindService()

方法前

服务已经被绑定,多次调用

bindService()

方法并不会导致多次创建服务及绑定

(

也就是说

onCreate()

onBind()

方法并不会被多次调用

)

如果调用者希望与正在绑定的服务解除绑

定,可以调用

unbindService()

方法,调用该方法也会导致系统调用服务的

onUnbind()-->onDestroy()

方法。

 

1.Service

常用生命周期回调方法如下:

 

 
 

 

onCreate() 

该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次

startService()

bindService()

方法,

 

服务也只被创建一次。

 onDestroy()

该方法在服务被终止时调用。

  

  

2. Context.startService()

启动

Service

有关的生命周期方法

 

onStart() 

只有采用

Context.startService()

方法启动服务时才会回调该方法。该方法在

服务开始运行时被调用。

 

多次调用

startService()

方法尽管不会多次创建服务,但

onStart() 

方法会被多次调用。

 

 

3. Context.bindService()

启动

Service

有关的生命周期方法

 

onBind()

只有采用

Context.bindService()

方法启动服务时才会回调该方法。

该方法在调用

者与服务绑定时被调用,

 

当调用者与服务已经绑定,

多次调用

Context.bindService()

方法并不会导致该方法被多次

调用。

 

onUnbind()

只有采用

Context.bindService()

方法启动服务时才会回调该方法。

该方法在调

用者与服务解除绑定时被调用。

 

备注:

 

1. 

采用

startService()

启动服务

 

     Intent intent = new Intent(DemoActivity.this, DemoService.class); 

     startService(intent); 

2.Context.bindService()

启动

 

    Intent intent = new Intent(DemoActivity.this, DemoService.class); 

    bindService(intent, conn, Context.BIND_AUTO_CREATE); 

   //unbindService(conn);//

解除绑定

 

 

 

 

 

 

9. 

注册广播有几种方式,这些方式有何优缺点

?

请谈谈

Android

引入广播机制的用意。

 

 

 

Android

广播机制(两种注册方法)

 

android

下,

要想接受广播信息,

那么这个广播接收器就得我们自己来实现了,

我们可以

继承

BroadcastReceiver

,就可以有一个广播接受器了。有个接受器还不够,我们还得重写

BroadcastReceiver

里面的

onReceiver

方法,当来广播的时候我们要干什么,这就要我们

自己来实现,不过我们可以搞一个信息防火墙。具体的代码:

 

  

public class SmsBroadCastReceiver extends BroadcastReceiver     

{    

   

    @Override   

    public void onReceive(Context context, Intent intent)    

    {    

        Bundle bundle = intent.getExtras();    

        Object[] object = (Object[])bundle.get("pdus");    

        SmsMessage sms[]=new SmsMessage[object.length];    

        for(int i=0;i<object.length;i++)    

        {    

            sms[0] = SmsMessage.createFromPdu((byte[])object[i]);    

            Toast.makeText(context, "

来自

"+sms[i].getDisplayOriginatingAddress()+" 

的消息是:

"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show();    

        }    

        //

终止广播,在这里我们可以稍微处理,根据用户输入的号码可以实现短信防火

墙。

    

 
 
 
 
 
 
 


文章来源:http://www.bozhiyue.com/mianshiti/android/2016/0317/3518.html
返回上一页    返回分类 上一篇:   下一篇:
相关