由主页界面引出的几个知识点(二)

1.scrollview嵌套recyclerview
有效果 别忘了添加
recyclerView.setNestedScrollingEnabled(false); 
不然的话 滑动会卡顿
2.onNewIntent:
首先,在默认情况下,当您通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统都会创建一个新的Activity实例并显示出来。为了不让Activity实例化多次,我们需要通过在AndroidManifest.xml配置activity的加载方式(launchMode)以实现单任务模式, 如下所示:


<activity android:label="@string/app_name" android:launchmode="singleTask"android:name="Activity1"></activity>

launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:

protected void onNewIntent(Intent intent) {

super .onNewIntent(intent);

setIntent(intent); // must store the new intent unless getIntent() will return the old one

processExtraData();

}
   大家遇到一个应用的Activity供多种方式调用启动的情况,多个调用希望只有一个Activity的实例存在,这就需要Activity的onNewIntent(Intent intent)方法了。只要在Activity中加入自己的onNewIntent(intent)的实现加上Manifest中对Activity设置lanuchMode=“singleTask”就可以。
       onNewIntent()非常好用,Activity第一启动的时候执行onCreate()---->onStart()---->onResume()等后续生命周期函数,也就时说第一次启动Activity并不会执行到onNewIntent(). 而后面如果再有想启动Activity的时候,那就是执行 onNewIntent()---->onResart()------>onStart()----->onResume().  如果android系统由于内存不足把已存在Activity释放掉了,那么再次调用的时候会重新启动Activity即 执行onCreate()---->onStart()---->onResume()等。

     当调用到onNewIntent(intent)的时候, 需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。
三:使用模拟器时遇到一个错误
apk运行时报错:UnsatisfiedLinkError: dalvik.system.PathClassLoader 异常原因和解决方法
四:其他
android属性layout_toRightOf和layout_toEndOf的区别
    做出来的效果都是一样的。老版本API中支持layout_toRightOf,新版本API中建议使用layout_toEndOf,为了兼顾新老版本,最好两个要同时使用。
android中xml tools属性详解
  1. xmlns:tools="http://schemas.android.com/tools"
  1. <TextView
  2.  android:id="@+id/text_main"
  3.  android:layout_width="match_parent"
  4.  android:layout_height="wrap_content"
  5.  android:textAppearance="@style/TextAppearance.Title"
  6.  android:layout_margin="@dimen/main_margin"
  7.  tools:text="I am a title" />

猜你喜欢

转载自blog.csdn.net/qq_27073205/article/details/78596431