【淘宝宝贝源码】【Google代理源码】【弹幕程序源码】activitymanager 源码

2024-12-22 23:13:16 来源:要源码和不要源码的区别 分类:休闲

1.各位大侠,android 关闭指定包名的淘宝宝贝源码程序源码,要如何实现了。Google代理源码类似一个程序列表,弹幕程序源码获取包名然后关闭这个程序
2.Android N 四大组件的工作原理

activitymanager 源码

各位大侠,Ktv 软件源码android 关闭指定包名的u report源码程序源码,要如何实现了。类似一个程序列表,获取包名然后关闭这个程序

       ActivityManager activityManger=(ActivityManager) this.getSystemService(ACTIVITY_SERVICE);

        List<ActivityManager.RunningAppProcessInfo> list=activityManger.getRunningAppProcesses();

       for(int i=0;i<list.size();i++)

       {

        ActivityManager.RunningAppProcessInfo apinfo ==list.get(i);

        if(apinfo.processName.equals(new String("包名")))

        {

        String[] pkgList=apinfo.pkgList;

        for(int j=0;j<pkgList.length;j++)

        {

        //2.2以上是过时的,请用killBackgroundProcesses代替

        activityManger.killBackgroundProcesses(pkgList[j]);

        }

        }

       }

Android N 四大组件的工作原理

       æœ¬æ–‡ä¾§é‡è®²è§£android N 系统中四大组件的工作原理,不同系统原理略有差别。通过分析四大组件的工作流程加深对Android Framework的理解,也为插件化开发打下基础。

        Activity

        展示一个界面并和用户交互,它扮演的是一个前台界面的角色。

        Service

        计算型组件,用于后台执行一系列计算任务,工作在主线程,耗时操作需要另起线程, 分为启动状态和绑定状态。

        BroadcastReceiver

        消息型组件,主要用于不同组件或者不同应用之间的消息传递,它工作在系统内部,不适合执行耗时操作,操作超过5s,会出现ANR。

        ContentProvider

        数据共享型组件,用于向其他组件或者应用共享数据,主要执行CURD操作。

        我们启动一个activity有两种方法,

        第一种(Activity直接启动方式):

        Intent intent = new Intent(this, MainActivity.class);

        startActivity(intent);

        第二种(Context启动方式)

        Intent intent = new Intent(this, MainActivity.class);

        getApplicationContext().startActivity(intent);

        不同的启动方式Activity的工作流程有点差别。

        两种启动都会调用到Instrumentation类中的execStartActivity的方法,系统最终是通过ActivityThread中的performLaunchActivity完成Activity的创建和启动。

        performLaunchActivity方法主要完成以下工作:

        1、通过ActivityClientRecord对象获取启动activity的组件信息

        2、通过mInstrumentation对象的newActivity方法调用classloader完成activity的创建

        3、通过r.packageInfo(LoadedApk 对象)的makeApplication方法尝试创建Application对象

        4、创建ContextImpl对象并调用Activity的attach方法完成一些数据的初始化

        5、调用Activity的onCreate方法

        在Activity启动的过程中,App进程会频繁地与AMS进程进行通信:

        App进程会委托AMS进程完成Activity生命周期的管理以及任务栈的管理;这个通信过程AMS是Server端,App进程通过持有AMS的client代理IActivityManager完成通信过程;

        AMS进程完成生命周期管理以及任务栈管理后,会把控制权交给App进程,让App进程完成Activity类对象的创建,以及生命周期回调;这个通信过程也是通过Binder完成的,App所在server端的Binder对象存在于ActivityThread的内部类ApplicationThread;AMS所在client通过持有IApplicationThread的代理对象完成对于App进程的通信。

        Service有两种启动方式,startService()和bindService(),两种状态可以并存:

        startService流程

        bindService流程

        BroadcastReceiver的工作过程主要包括广播的注册、发送和接收:

        动态注册过程:

        发送过程

        静态注册是由PackageManagerService(PMS)在应用安装的时候完成整个注册过程的,除广播以外,其他三大组件也都是在应用安装时由PMS解析并注册的。

        每个进程的入口都是ActivityThead.main(),App的启动流程如下:

        从源码中可以看出:

        应用启动的入口为ActivityThread的main方法,main方法会创建ActivityThread实例并创建主线程消息队列。

        attach方法中远程调用AMS的attachApplication方法,并提供ApplicationThread用于和AMS的通信。

        attachApplication方法会通过bindApplication方法和H来调回ActivityThread的handleBindApplication,这个方法会先创建Application,再加载ContentProvider,然后才会回调Application的onCreate方法。

        由上图可以看出,在ContentProvider的启动过程中伴随着app进程的启动。

        ContentProvider的其他CURD操作如insert,delete,update跟query的流程类似。

更多资讯请点击:休闲

热门资讯

源码logo

2024-12-22 23:102205人浏览

sofamq源码

2024-12-22 22:541951人浏览

migu源码

2024-12-22 22:48750人浏览

getconstructors源码

2024-12-22 21:312655人浏览

推荐资讯

天津南开区市场监管局对乱涨价药店罚款50万元

中国消费者报天津讯记者 万晓东)近日,天津市南开区市场监管局对一药店销售口罩两次涨价的违法行为作出罚款50万元的决定。据悉,天津市南开区市场监管综合行政执法支队的执法人员在对辖区的一家药店检查时,发现

testapp源码

1.修改手机软件代码手机上写代码的软件有什么2.androidstudio创建的工程中,app目录下的test是干什么的?修改手机软件代码手机上写代码的软件有什么 ① 怎么把手机上的app转化为开