Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

锋哥开始收Java学员啦!

Android面试题总结 PDF 下载


分享到:
时间:2020-10-16 09:44来源:http://www.java1234.com 作者:转载  侵权举报
Android面试题总结 PDF 下载
失效链接处理
Android面试题总结 PDF 下载


本站整理下载:
提取码:wh48 
 
 
相关截图:
 
主要内容:

1、Activity的生命周期,两个Activity之间跳转时必然会执行的是那几个方法?
  ——启动过程onCreate()->onStart()->onResume,销毁过程:onPause->onStop->onDestory;
  必然会执行第一个Activity的onPause()->onStop(),执行第二个Activity的 onCreate()->onStart()->onResume
onCreate():在这里创建用户、做一些数据的初始化工作 
onStart():到这一步百年城用户可见不可交互的
onResume():变成与用户可交互的
onPause():到这一步是可见但不可交互的(系统会停止所有的动画等消耗CPU的事情从上文的描述已经知道,应该在这里保存你的一些数据,这是程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在onResume()里读出来,注意:这个方法里做的事情要短,因为下一个activity不会等到这个方法完成才启动)
onStop():变得不可见,被下一个activtiy 覆盖,
onDestory():这是activtiy被干掉前的最后一个被调用的方法;
onPause,onStop,onDestory,三种状态下activtiy都有可能被系统干掉
 
2、启动一个Activity有哪几种方法?
—— 一种Intent  intent=new Intent(this,xxx.class);已知要启动的Activity名称;
另一种Intent  intent=new Intent(Intent.ACTION_INSERT,getIntent().getData());不知道要启动的Activtiy名称,例如调用系统的发送电信的程序。
 
3、启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?
区别是根据Activity在manifest里面的配置,这个activtiy可能会放在不同的task栈里面
Intent设置的flag flag_new_task
 
4、怎么让在启动一个Activity是就启动一个service?
——把启动的service代码写在Activity的onCreate方法中。
Activity怎么和service绑定,怎么在Activtiy中启动自己对应的service?
 ——通过bindService方法可以将Activtiy和Service绑定
 
5、两个Activity之间怎么传递数据?
——在Android中使用Intent在两个Activtiy间传递数据 
 
6、你后台的Activity被系统回收怎么办:onSaveInstanceState
当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B,这个时候A会执行
Java代码
  public void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  outState.putLong("id", 1234567890);
  }
  public void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  outState.putLong("id", 1234567890);
  }
B 完成以后又会来找A, 这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数savedInstanceState,没被收回的就还是onResume就好了。
savedInstanceState是一个Bundle对象,你基本上可以把他理解为系统帮你维护的一个Map对象。在onCreate()里你可能会用到它,如果正常启动onCreate就不会有它,所以用的时候要判断一下是否为空。
Java代码
  if(savedInstanceState != null){
  long id = savedInstanceState.getLong("id");
  }
  if(savedInstanceState != null){
long id = savedInstanceState.getLong("id");
}
 
7、如何退出Activity
对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。
1、抛异常强制退出:
该方法通过抛异常,使程序Force Close。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
2、记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
 
4、递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
除了第一个,都是想办法把每一个Activity都结束掉,间接达到目的。但是这样做同样不完美。
你会发现,如果自己的应用程序对每一个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。
但至少,我们的目的达到了,而且没有影响用户使用。


 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐