android启动app
㈠ Android 使用广播系统解决app开机自启动问题
关注 【网罗开发】微信公众号,回复【160】便可领取。
网罗天下方法,方便你我开发 ,更多Android技术干货等待领取,所有文档会持续更新,欢迎关注一起成长!
总结一下使用ACTION_BOOT_COMPLETED的广播,解决app开机自启动的问题
1.首先在你的工程上建一个广播接受的类,继承BroadcastReceiver:
2.然后要在AndroidManifest.xml中加入权限和配置相关信息:
3.在application标签中,配置以下相关信息:
补充说明:
1.查看系统中是否安装了类似360管家的软件,为了加快开机速度,默认是关闭掉开机广播的,只需要在设置中打开即可。
2.如果监听不到广播,可以尝试同时监听广播和sd卡。
3.同时监听广播和sd卡,在application标签中,配置以下相关信息:
㈡ Android APP启动白(黑)屏解决方案(适用于App启动立即展现logo、版权等)
Android APP启动白(黑)屏解决方案(适用于App启动立即展现logo、版权等)
我们要求在App启动时显示我们设置的启动页面,实测发现打开app的时候,会有短暂的1秒--2秒的白屏或者黑屏,然后才进入到程序界面。
简单高效的解决方案一:
1、使用layer-list制作背景样式
新建bg_start_pic.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置整个屏幕背景为白色 -->
<item>
<color android:color="@color/white" />
</item>
<!-- 中间logo -->
<item
android:width="@dimen/dp_150"
android:height="@dimen/dp_150"
android:gravity="center">
<bitmap android:src="@drawable/icon_splash_logo" android:gravity="center" />
</item>
<!-- 底部图表 -->
<item
android:bottom="10dp"
android:gravity="bottom|center_horizontal">
<bitmap android:src="@drawable/pic_banner_home" />
</item>
</layer-list>
2、修改styles.xml文件
增加SplashTheme主题
<style name="SplashTheme" parent="AppTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/bg_start_pic</item>
</style>
3、修改AndroidManifest.xml
LauncherActivity使用StartAppTheme主题
<activity
android:name=".LauncherActivity"
android:label="@string/app_name"
android:theme="@style/StartAppTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
㈢ Android App安装以及启动流程
Android App的安装可以分为有界面的安装和无界面的安装。
有界面的安装其实就是调用系统App(PackageInstaller)去安装apk,打开安装apk应用之后,点击安装按钮执行startInstall方法,然后就进入安装中界面开始安装,安装成功或者失败都会有对应的回调。内部其实也是使用PackageManager的installExistingPackage方法,通过binder机制,调用到PackageManagerService的installExistingPackage方法,最终调用到installExistingPackageAsUser方法安装,而 安装的核心原理其实就是将apk文件拷贝到系统可识别的重要的文件目录 :
无界面安装是调用adb命令,执行到一个c写的commandline脚本,调用 install_app 方法,然后再调用 pm_command ,然后执行到pm脚本,执行 run 方法,调用 runinstall ,然后调用 installPackageAsUser 通过AMS执行安装。
说到App的启动,就需要从开机开始说起,Android开机会先把所有应用安装一遍就是把apk拷贝到对应的目录(这也是Android开机慢的原因)。
整个流程如下:
其实App的启动,除了刚开机是不一样之外,正常时候基本与Activity的启动非常接近。