JNI简单配置的使用&&我的云音乐

一、在CMakeLits.txt配置

1.添加头文件路径                        include_directories(include)

2.设置三方库所在的位置             set(FF ${CMAKE_CURRENT_SOURCE_DIR}/库的所在路径)

3.添加所在的库                           add_library(avcodec(三方库的名字) SHARED IMPORTED)

4. 动态链接添加的库                   target_link_libraries               

build.gradle(app)externalNativeBuild {

    cmake {
cppFlags "-std=c++11"
}
ndk{
abiFilters "armeabi-v7a x86不同的版本"
}
}

//设置资源文件路径
sourceSets {
main{
jniLibs.srcDirs = ['libs'] ---->libs是放三方的so文件的,和src同一级目录
}
}

 
5.常用的命令去快速搜索
 grep 关键字 . -srn : 所有代码包含这个关键字
 find . -name CallFeaturesSettingsTree.java(文件名字) : 当前目录下搜索这个文件的位置
keytool -printcert -jarfile xxx.apk ------> 查看app的MD5一些信息

 

 

二、引导界面 : ViewPager+Fragment来实现
  
  

    adapter.registerDataSetObserver(indicator.getDataSetObserver()); ----->去监听数据发生变化
  

三、侧滑列表 : DrawerLayout(侧滑窗体) + ScrollView

  

  
四、首页界面的搭建 :

        

  我的音乐,我的推荐,我的视频三个AppBar构建  :  AppBarLayout + ViewPager + Fragment

  我的推荐之推荐、朋友、电台界面构建 : MagicIndicator + ViewPager + Fragment

  推荐界面的搭建 : GridLayoutManager + RecyclerView

  歌单的实现 : 自定义LineLayout 重写OnMeasure 实现宽高相等, RelativeLayout 包裹图片()和文字 + CardView(设置为圆角和阴影的样子)

  

  轮播广告以及下面四个的实现 :  RelativeLayout作为主父局, 定义一个背景为红色的View,上面嵌套一个Banner(轮播的控件),再实现下面四个属性

  

  五、onNewIntent 的使用以及注意事项

    解释 : 如果一个Activity已经启动过,并且存在当前应用的Activity任务栈中,为了防止它再次启动创建新的实例,就会走onNewInetnt这个方法

    1.当ActivityA的LaunchMode为SingleTop时:
      如果ActivityA在栈顶,且现在要再启动ActivityA,这时会调用onNewIntent()方法 ,生命周期顺序为:onCreate--->onStart--->onResume---onPause>onNewIntent--->onResume

    2.当ActivityA的LaunchMode为SingleInstance,SingleTask:如果ActivityA已经在堆栈中,那么此时会调用onNewIntent()方法,生命周期调用顺序为:

     onCreate--->onStart--->onResume---按下Home键>onPause--->onstop--->onNewIntent--->onRestart--->onstart--->onResume

    3.这里面有个注意事项

     @Override
     protected void onNewIntent(Intent intent) {
          super.onNewIntent(intent);
          setIntent(intent);//设置新的intent
          int data = getIntent().getIntExtra("tanksu", 0);//此时的到的数据就是正确的了
      }
    在这里,如果你没有调用setIntent()方法的话,则getIntent()获取的intent都只会是最初那个intent,这里很重要

    

PlayListManagerImpl  监听广播接收器  onNewIntent

https://www.kancloud.cn/alex_wsc/androids#/catalog   ----->一篇很不错的网址

https://www.jianshu.com/p/edcca8d3dd00  -------->OOM的问题,lottie框架解决帧动画

http缓存方式 : 对比缓存和强制缓存

  

 
原文地址:https://www.cnblogs.com/liunx1109/p/11680800.html