文章目录
lintOptions
lintOptions{
checkReleaseBuilds false
abortOnError false
}
安卓开发-目录结构
https://blog.csdn.net/qq_41858698/article/details/104355917
nox模拟器连接AS
nox_adb.exe connect 127.0.0.1:62001
AS项目排除duplicate库
//剔除工程中所有的该依赖
configurations {
// https://blog.csdn.net/weixin_44715716/article/details/120899914
// https://blog.csdn.net/lfq88/article/details/118222107?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-118222107-blog-128267706.235%5Ev36%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-118222107-blog-128267706.235%5Ev36%5Epc_relevant_default_base3&utm_relevant_index=1
// https://blog.csdn.net/jdsjlzx/article/details/97940958/
all*.exclude group: 'com.android.support', module: 'support-v4'
}
排除前后
安卓生命周期概要
public class Activity extends ApplicationContext {
-------------------------------------------------------------------------------
【一、】protected void onCreate(Bundle savedInstanceState);
-------------------------------------------------------------------------------
1、当activity第一次被创建时调用。
2、视图的创建、数据的初始化都在这里执行。
3、Bundle savedInstanceState参数,这里面会保存activity之前的状态。
==============================================
==============================================
-------------------------------------------------------------------------------
【二、?】protected void onRestart();
-------------------------------------------------------------------------------
1、被stop的activity重新启动时调用此函数
2、后面会紧跟onResume
==============================================
==============================================
-------------------------------------------------------------------------------
【三、】protected void onStart();
-------------------------------------------------------------------------------
1、在onCreate方法后调用
==============================================
==============================================
-------------------------------------------------------------------------------
【四、】protected void onResume();
-------------------------------------------------------------------------------
1、在onStart方法后调用。
2、activity是使用栈结构来管理的,此时(cur)activity处于栈顶(后进先出)。
==============================================
==============================================
-------------------------------------------------------------------------------
【五、】protected void onPause();
-------------------------------------------------------------------------------
1、当有新的activity进入栈顶,即当前activity被迫到后台运行
2、onPause就会被调用。
==============================================
==============================================
-------------------------------------------------------------------------------
【六、】protected void onStop();
-------------------------------------------------------------------------------
1、会在onPause方法后调用(此时activity对于用户来讲,已经是不可见的了(Invisible)。)
2、从栈的角度来说,就是有新的activity压栈,或者已经存在的activity回到了栈顶。
==============================================
==============================================
-------------------------------------------------------------------------------
【七、】protected void onDestroy();
-------------------------------------------------------------------------------
1、这是生命周期中的最后一个函数。
2、一般情况下activity已经完成(调用finish函数) or 系统为了回收资源主动销毁activity时,onDestroy才会被调用,可以通过isFinishing()方法来区分这2种情况。
==============================================
==============================================
}
【***】2个概念需要区别一下:
1. 可见的(Visible,从onStart到onStop,这里的可见,不仅仅是在屏幕上可见)
2. 前台运行(Foreground,从onResume到onPause)
【***】打印函数
Log.d(TAG,"=== onCreate ===");
【***】各种运行情况
从创建到显示出来:
【一、】onCreate-->【三、】onStart-->【四、】onResume
打开其它App,一般我们会去按Home键退出
突发:【五、】onPause-->【六、】onStop
恢复:【二?、】onRestart-->【三、】onStart-->【四、】onResume
最后一个activity,按下Back键程序结束
【五、】onPause-->【六、】onStop-->【七、】onDestroy
MainActivity进入SecondActivity,按下back键
SecondActivity:【五、】onPause-->【六、】onStop-->【七、】onDestroy
MainActivity:【二?、】onRestart-->【三、】onStart-->【四、】onResume
【extra】onSaveInstanceState与onRestoreInstanceState
1、在onPause、onStop方法调用后,activity进程是有可能随时被杀掉的,所以应该在onPause方法中进行数据保存操作,以免数据丢失。
2、onSaveInstanceState方法也是完成类似的功能,数据保存在给定的bundle里。因为onSaveInstanceState不是activity生命周期函数,android API更推荐在onPause方法中去保存数据。
横竖屏切换(不做任何处理,切换下横竖屏)
1、销毁【七、】——2、重新创建了activity【一、】
为了解决上述问题,一般会有几个办法:
i.禁止横竖屏切换(限定横屏或竖屏,比较流氓啊,不推荐)
n.横竖屏独立布局(创建2个文件夹layout-land和layout-port,对应的xml文 件不变)
防止activity重载(在AndroidManifest.xml中添加android:configChanges="keyboardHidden|orientation",并重写onConfigurationChanged方法)
【***】博客地址:
https://blog.csdn.net/weixin_29958797/article/details/117348966
安卓调JS/TS 和 JS/TS调安卓过程
1、JS/TS 调安卓伪代码
this._bridge = window['PlatformClass']?.createClass("com.xxx.JSBdg"); //1、取桥
this._bridge.call(JVConst.onLogin, json); //2、桥的简单用法(其它形式看官网)
declare type MBaseType = boolean | number | string;
/**
* @author lhz
* @description 桥接口
* @time 2023-05-27
*/
export interface IBridge {
callWithBack(cbF: (json: string) => void, mthName: string, json: string): void;
//函数参数只支持布尔、浮点、字符串等基本类型,支持返回值
call(mthName: string, sth: MBaseType): MBaseType;
}
2、安卓调JS
ConchJNI.RunJS("onTestJs('" + v + "')"); //1、java关键代码
//2、需要js存在onTestJs(json: string)函数
/**
* 测试函数
*/
window['onTestJs'] = function (json: string) {
alert('java传参至此:' + json);
}.bind(this);