快速搭建项目

新项目如何搭建?老项目如何重构?这里有些技巧可以参考下。

快速搭建项目
392人加入学习
(16人评价)
价格 ¥99.00
教学计划
会员免费学 购买课程

解决强转的套路:

  1. 利用继承
  2. 利用接口
  3. 利用泛型
[展开全文]

ActivityLifecycleCallback是在Android4.0之后才有的。

[展开全文]

应用被强杀导致静态变量为null。

SingleTask和SingleTop + ClearTop效果一样

[展开全文]

1.why?为什么不把他们封装成公用的?

[展开全文]

架构

WHY:为什么不把它做成任意App都能用呢?

HOW:如何找到这些App共性,如何抽象

WHAT:最终的表现形式

 

[展开全文]
  1. 当应用被强杀时,static变量是会回收,若是再用到会NullPointer

  2. 首页的启动模式一般用:singleTask。 是因为:若重新再其他页面重新跳转到首页,可以清空之前打开的页面! 也可以使用:singleTop + clear_top的方式。

  3. 在首页的onNewIntent中判断当前应用是否为被强杀的,若是被强杀的则重新到WelcomeAactivity。

    4.若是应用被强杀的,很多操作被要判断!所以需要提到父类中去!父类告诉我什么时候可以初始化、什么时候是应用被强杀的!

    5、如何判断应用是被强杀?当被强杀时,使用静态变量时会被重新分配! 

      可以在CustomApplication中定义一个变量 eg:

      public static int mAppStatus = -1;

      在第一个页面中修改这个值,之后再BaseActivity中判断 这个值若是与CustomApplication中的值一样,则说明是被强杀的,走对应的保护流程。

  4.  

[展开全文]

AppStatusTracker 追踪当前APP各种状态

ConstantValues 各种状态定义

 

[展开全文]

懒加载

   ---> 预加载

LazyLoad

setUserVisableHint(boolean isVisable)

---------------------

Tab结构 ->

底部RadioGroup + RadioButton + ViewPager

 

---------------------

侧滑菜单 ->

  DrawerLayout

 

----------------------

目前找到较好用的:

RecyclerView 

+ HeaderRecyclerViewAdapter

+ SuperSwipeRefreshLayout 套件

Stick、HeaderView、上拉下拉(可自定义动画)一条龙

----------------------

Title栏 ->

 为了考虑兼容视差效果(虽然用得少)

RelativeLayout --> LinearLayout(用于底部的操作条,比如确定取消、多格按钮等的容器)
CoordinatorLayout
AppBarLayout  
CollapsingToolbarLayout --> FrameLayout(用于视差效果)
Toolbar  
     -> TextView(用于展示Title,          为什么不用系统自带的,
    因为有时候需要居中,居中的时候,
 需要在OnLayoutChangeListener中现算,
          因为系统自带的居中,
          其实并不是屏幕正中间,
         而是减去左边返回按钮、
   右边可能有的菜单按钮后给你居中的,
       假如左右各一个,还算整齐,
        假如右边菜单按钮没有,
         那么这个标题就偏了)

FrameLayout
   (带属性app:layout_behavior=   "@string/appbar_scrolling_view_behavior"用于视差效果)
    --> 正文容器(一般用于放Fragment)

或者正文容器换成NestedScrollView,看需求。behavior属性也是要带的。

[展开全文]

分析Viewpager是什么东西。what

套路来了

[展开全文]

FragmentPagerAdapter和FragmentStatePagerAdapter的区别

 

合理利用生命周期

[展开全文]

=课时3

singleTask
singleTop + clearTop

=课时4

前台进程: runningTask 、自己通过生命周期记录
4.0之后 ActivitylifeCycleCallBacks接口

=课时5

 

[展开全文]

在有延时操作时应注意关闭相应的请求,延时操作包括:用Handler发送消息,用Timer处理一个计时任务,异步执行网络请求等

[展开全文]

ActivityLifecycleCallbacks接口,可以监听activity状态的观察者。

activityA --》 activityB

A: onCreate() --> onStart() --> onResume()

跳转触发: --> onPause();

B: onCreate() --> onStart() --> onResume()

A: onStop() --> onDestory();

ActivityLifecycleCallbacks 一个简易的观察者,可以在activity走生命周期时触发相应的方法。4.0以上使用,4.0一下自己写,在baseActivity的各生命周期中调用。

 

[展开全文]

HomeActivity设置成singleTask后,当应用被强杀时,跳转到HomeActivity会先实例化调用onCreate()再到onNewIntent(),如果在后台没有被强杀,当从栈中启动一个已经存在的HomeActivity时,系统不会再执行onCreate方法,而是执行onNewIntent方法。

[展开全文]

OnAttach(Context context){

   listener=(C.ic)context

}

使用这种方式 调用activity中方法。

fragmentList.get(position) 复用fragment 有小概率的bug问题。

用EventBus 没问题。

[展开全文]

FragmentPagerAdapter View回收 Fragment不回收。

fragment显示在屏幕上时,会调用setUserVisibleHint为true 不显示时 为false.

适用于Pager数固定,很少。

FragmentStatePagerAdapter 连Fragment完全回收。

 

[展开全文]