面试总结--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
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
setWebViewClient和setWebChromeClient的作用:前者主要用于处理webView的控制问题,如加载、关闭、错误处理等;后者主 要处理js对话框、图标、页面标题等。
单独构建一个接口,作为处理js与java的数据交互的桥梁,本文封装的代码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(); //关键结束 }
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
