组件化1

1.依赖

dependencies {
	//对于自身目录使用的fileTree
    implementation fileTree(dir: 'libs', include: ['*.jar'])
   //对于其他的module使用的就是project字段,而:表示的是文件目录内核自己相同层级的module
   implementation project(":base")
}

2.Application的替换问题。
①如果功能module有Application,主module没有自定义的Application,这时会自然引用功能module中Application。
②如果主module有自定义的Application,其他module没有,那么自动引入主module的Application。
③如果功能module中有两个自定义Application,在解决冲突后,Application会载入编译后module的Application。
④如果主module中有自定义的Application,其他module中也有自定义的Application,在解决冲突后,最后编译的主module中Application会在AndroidManifest中。

对于Application的声明的重复的权限,在合并的时候,会自动去重。

3.使用SharedUserId

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.base"
  android:sharedUserId="com.xxx">
</manifest>

通过声明相同的SharedUserId,拥有同一个UserId的多个App能运行到同一个进程中,所以默认可以互相访问任意的数据。
如果是在功能module中功能清单中声明ShareUserId,那么最终的AndroidManifest并不会将这个功能module的shareUserId放在其中。
只有主module的AndroidManifest中声明后才有用。
https://www.cnblogs.com/zhangxia/p/4952739.html
重要的是在一个app访问另外一个App的内容的时候,需要通过包名获取其相对应的context,然后通过这个context进行获取数据。

Context ct = this.createPackageContext("com.example.androidstudiotest3", Context.CONTEXT_IGNORE_SECURITY);

3.activity的启动流程
会发现当从MainActivity启动Main2Activity的时候,首先调用MainActivity的onPause()方法,并不会立即调用onStop()方法,而是在Main2Activity创建完毕后,才会调用MainActivity的onStop()方法。

启动MainActivity

onActivityCreated==activity==MainActivity
onActivityStarted==activity==MainActivity
onActivityResumed==activity==MainActivity

从MainActivity启动Main2Activity

onActivityPaused==activity==MainActivity
onActivityCreated==activity==Main2Activity
onActivityStarted==activity==Main2Activity
onActivityResumed==activity==Main2Activity
onActivitySaveInstanceState==activity==MainActivity
onActivityStopped==activity==MainActivity

销毁Main2Activity

onActivityPaused==activity==Main2Activity
onActivityStarted==activity==MainActivity
onActivityResumed==activity==MainActivity
onActivityStopped==activity==Main2Activity
onActivityDestroyed==activity==Main2Activity

销毁MainActivity

onActivityPaused==activity==MainActivity
onActivityStopped==activity==MainActivity
onActivityDestroyed==activity==MainActivity

4.Application的一些方法

//终止应用程序对象时调用,不保证一定被调用,当
@Override
public void onTerminate() {
    super.onTerminate();
    Log.e("TAG", "onTerminate====");
}

//当后台程序终止且资源还匮乏时会调用这个方法,应该在这里释放一些资源
@Override
public void onLowMemory() {
    super.onLowMemory();
    Log.e("TAG", "onLowMemory====");
}

/**
 * TRIM_MEMORY_COMPLETE,
 * TRIM_MEMORY_MODERATE,
 * TRIM_MEMORY_BACKGROUND,
 * TRIM_MEMORY_UI_HIDDEN, 一般返回这个
 * TRIM_MEMORY_RUNNING_CRITICAL,
 * TRIM_MEMORY_RUNNING_LOW,
 * TRIM_MEMORY_RUNNING_MODERATE,
 */
@Override
public void onTrimMemory(int level) {
    super.onTrimMemory(level);
    Log.e("TAG", "onTrimMemory====" + level);
}

//配置改变时触发这个方法,比如屏幕旋转
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Log.e("TAG", "onConfigurationChanged====");
}

5.application中注册activity的生命周期监听,能够获取到每个activity的创建销毁过程。可以使用Stack收集所有的activity对象,并操作activity对象。

在application的onCreate()方法中进行注册

registerActivityLifecycleCallbacks(activityLifecycleCallbacks);

private ActivityLifecycleCallbacks activityLifecycleCallbacks = new ActivityLifecycleCallbacks() {

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

        Log.e("TAG", "onActivityCreated==activity==" + activity.getLocalClassName());
    }

    @Override
    public void onActivityStarted(Activity activity) {
        Log.e("TAG", "onActivityStarted==activity==" + activity.getLocalClassName());
    }

    @Override
    public void onActivityResumed(Activity activity) {
        Log.e("TAG", "onActivityResumed==activity==" + activity.getLocalClassName());
    }

    @Override
    public void onActivityPaused(Activity activity) {
        Log.e("TAG", "onActivityPaused==activity==" + activity.getLocalClassName());
    }

    @Override
    public void onActivityStopped(Activity activity) {
        Log.e("TAG", "onActivityStopped==activity==" + activity.getLocalClassName());
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
        Log.e("TAG", "onActivitySaveInstanceState==activity==" + activity.getLocalClassName());
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        Log.e("TAG", "onActivityDestroyed==activity==" + activity.getLocalClassName());
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值