Android笔试和面试常见题目(四)

自己整理的一些Android常见面试题,欢迎各位参考。 有错误或有更好的题目答案可以联系修改。

31、两个Activity之间跳转必定会执行的是那几个方法
1.一般情况下比如说有两个activity,分别叫A,B,当在A里面启动B组件的时候, A会调用 onPause()方法,然后 B 调用 onCreate() ,onStart(), onResume()。
这个时候 B 覆盖了窗体, A 会调用 onStop()方法. 如果 B 是个透明的,或者是对话框的样式, 就不会调用 A 的 onStop()方法。

32、如 何 退 出 Activity ? 如 何 安 全 退 出 已 调 用 多 个 Activity 的Application?
1.通常情况用户退出一个Activity只需要按返回键,我们在写代码中可以直接调用finish()方法就行。
2.记录打开的Activity:每打开一个Activity,就记录下来,在需要退出时,关闭每一个Activity即可。
3.发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4.递归退出:再打开新的Activity时使用startActivityForResult ,然后自己加标志,在onActivityResult中处理,递归关闭。

33、横竖屏切换时 Activity 的生命周期
此时的生命周期跟清单文件里的配置有关系
1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,默认首先首先销毁当前的Activity,然后重新加载。
2.如果设置了Activity android:configChanges=”orientation|keyboardHidden|screenSize”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged的方法。

34、ListView数据集改变后,如何更新ListView
使用ListView的Adapter的notifyDataSetChanged()方法,该方法会使ListView重新绘制。

35、ListView如何定位到指定的位置
可以通过ListView提供的Lv.setSelection(ListView.getPosition)。

36、Activity启动模式
Standard
标准模式,每次启动Activity都会创建一个新的Activity实例,并且将其压入任务栈栈顶,而不管这个Activity是否已经存在。Activity的启动三回调(onCreate()->onStart()->onResume())都会执行。

Singletop
栈顶复用模式,如果有新的Activity已经位于栈顶,则不会创建新的Activity,如果栈顶没有则会创建。

Singletask
栈内复用模式,创建这样的Activity的时候,系统会先确认它所需任务栈已经创建,否则先创建任务栈.然后放入Activity,如果栈中已经有一个Activity实例,那么这个Activity就会被调到栈顶,onNewIntent(),并且singleTask会清理在当前Activity上面的所有Activity.(clear top)

Singleintance
加强版的singleTask模式,这种模式的Activity只能单独位于一个任务栈内,由于栈内复用的特性,后续请求均不会创建新的Activity,除非这个独特的任务栈被系统销毁了

37.在两个Activity之间如何传递一张图片。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_target);     
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
byte[] b = baos.toByteArray();

Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("picture", b);
startActivity(intent);

Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);

发布了29 篇原创文章 · 获赞 34 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览