面试总结--2014年11月10日

2014年北京科蓝软件系统有限公司--面试题

1.简述Activity启动的四种模式

答:Activity的启动模式分为四种standard,singleTop,singleTask,singleInstance,创建Activity时选择适当的启动模式,能够更好的避免重复创建相同的Activity。

只需要在清单配置文件中声明

    android:name=""

   android:lanuchMode=" "

/>

下面分别叙述下这四种启动模式

(1)standard:每一次启动Activity时,都会创建Activity的实例

(2)singleTop:当启动Activity时,如果该Activity位于任务栈顶,则不创建新的实例,而是调用onNewIntent()方法

(3)singleTask:当启动Activity时,如果Activity位于任务栈中,则将其上面的Activity destory掉,并调用它的onNewIntent()方法

          如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个            task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。

(4)singleInstance:只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。

2.应用程序如何安全退出

答:定义Application中定义一个List list=null,同时定义两个公有的方法addActivity(),exit(),并在onTermiate()方法中调用exit();

public void addActivity(){

    list.addActivity();

}


public void exit(){

    for(Activity activity:list){

            activity.finish();

    }

    System.exit(0);

}


当每一次创建Activity时将Activity加入到列表中,当你按下返回键时调用onTermiate()方法

3.webView与js交互

答:

(1)webView调用js方法,直接通过webView.loadUrl("javascript:myfunction()");

(2)js调用本地方法

 首先在WebView中添加对js的支持

 WebSettings setting = webView.getSettings(); 

setting.setJavaScriptEnabled(true);//支持js

setWebViewClientsetWebChromeClient的作用:前者主要用于处理webView的控制问题,如加载、关闭、错误处理等;后者主 要处理js对话框、图标、页面标题等。

单独构建一个接口,作为处理jsjava的数据交互的桥梁,本文封装的代码AndroidToastForJs.java

webView.addJavascriptInterface(new AndroidToastForJs(mContext), "JavaScriptInterface");

然后在js中调用本地方法


4.如何activity窗口化

答:想要把Activity以窗口化显示,只需在AndroidManifest.xml里修改Activity的属性:在

    android:theme="@android:style/Theme.Dialog"使activity半透明化:     5.Android MVC架构
答:M--Model数据层,V--View视图层,C--Control控制层,在android中xml文件中定义的空间相当于View,而处理程序之间的
业务逻辑放在activity中执行,最后数据层用于数据层和缓存操作6.项目中如何避免OOM
答:1.及时回收Bitmap内存2.对图片压缩处理 3.图片缓存处理7.10秒内完成progressBar的进度
答:

progressBar = (ProgressBar)findViewById(R.id.progressBar); Thread thread = new Thread(new Runnable() { @Override public void run() {int progressBarMax = progressBar.getMax();try {while(progressBarMax!=progressBar.getProgress()){int stepProgress = progressBarMax/10;int currentprogress = progressBar.getProgress();progressBar.setProgress(currentprogress+stepProgress);Thread.sleep(1000);}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} } }); thread.start(); //关键结束 }

}





 




本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部