launcher

android: permission和uses-permission

北慕城南 提交于 2020-02-23 10:27:40
首先,先看一下permission定义的格式: [java] view plain copy <permission android:description= "string resource" android:icon= "drawable resource" android:label= "string resource" android:name= "string" android:permissionGroup= "string" android:protectionLevel=[ "normal" | "dangerous" | "signature" | "signatureOrSystem"] /> 上面代码来自官方文档: http://developer.android.com/guide/topics/security/security.html 。 propectionLevel这个属性是必须声明,告诉系统通知用户的应用要求许可,或允许谁认为获得许可的情况下。 permissionGroup这个是可选的,被用于协助t系统向用户显示权限,一般会像(listed in android.Manifest.permission_group )这个一样设置为标准系统组,很少自定义,最好使用已经定义的,使用起来也方便。 lable,name和cicon用于描述权限。

Eclipse 3.6 jee failed to create the java virtual machine

﹥>﹥吖頭↗ 提交于 2020-02-15 20:16:37
这个错误是因为eclipse的Xmx的值设置太大. Eclipse 缺省启动配置 文件 指定了JVM的堆内存的大小小Xmx ,或者设置Java版本错误,. Xmx的设置在eclipse.ini文件中.如果该值设置太大,而电脑内存中没有连续的这么大内存空间的话,Eclipse就会启动出错._failed to create the java virtual machine 所以 解决 办法是改动eclipse.ini文件,删除Xmx的设置.这样Eclipse就可以正常启动. 或将Xmx的值改小一些 步骤如下: 找到eclipse目录下的eclipse.ini,可以看到如下内容: -startup plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher

Eclipse问题“Failed to create the Java Virtual Machine”解决办法

随声附和 提交于 2020-02-15 20:15:08
不知道是不是因为系统和特定JDK版本的原因,以前在WIN7上面都没有出现过这个问题,今天电脑安装了一个XP系统,运行Eclipse居然 出现这个问题,如下图所示: 该开始以为是Eclipse找不到虚拟机,需要制定jvm.dll文件,但是不是这个问题,需要更改eclipse.ini的堆大小配置,256M不行,需要128M, 这一点没有深入研究,不知道是不是因为XP系统的原因,决定了其是128M。 修改前的eclipse.ini为: 1 -startup 2 plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar 3 --launcher.library 4 plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502 5 -product 6 org.eclipse.epp.package.jee.product 7 --launcher.defaultAction 8 openFile 9 --launcher.XXMaxPermSize10 256M11 -showsplash12 org.eclipse.platform13 --launcher.XXMaxPermSize14 256m15 --launcher

[五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的

一个人想着一个人 提交于 2020-02-08 22:59:06
原文地址: [五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的 Launcher启动类 本文是双亲委派机制的源码分析部分,类加载机制中的双亲委派模型对于jvm的稳定运行是非常重要的 不过源码其实比较简单,接下来简单介绍一下 我们先从启动类说起 有一个Launcher类 sun.misc.Launcher; 仔细看下这简短的几行注释,可以得到有用的信息 ps:直接IDE里面查看反编译的,看不到注释的,可以下载openJDK查看源码,我的这个版本是openjdk-8-src-b132-03_mar_2014 sun.misc.Launcher 这个类是系统用于启动主应用的启动器 构造方法 Launcher() 中做了四件事情 创建 扩展 类加载器 创建 应用程序 类加载器 设置ContextClassLoader 如果需要安装安全管理器 security manager 其中launcher是staitc的,所以初始化的时候就会创建对象,也就是触发了构造方法,所以初始化的时候就会执行上面四个步骤 ExtClassLoader 和 AppClassLoader 都是Launcher的静态内部类 而且,他们也都是ClassLoader的实现类 看下ExtClassLoader的创建中的关键几步

How to make a launcher

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-08 21:37:07
问题 I have been developing for quite a time and I am now trying to make an app that will replace the original home (e.g. HTC sense). I need the app to open when the the user hits the home button on their phone. So basically it is a home replacement. Does any one know how to go about this? 回答1: Just develop a normal app and then add a couple of lines to the app's manifest file. First you need to add the following attribute to your activity: android:launchMode="singleTask" Then add two categories

论一个APP从启动到主页面显示经历的过程?

谁说胖子不能爱 提交于 2020-02-04 10:37:14
前言 (个人观点.不喜勿喷) 本部分内容是关于Android进阶的一些知识总结,涉及到的知识点比较杂,不过都 是面试中几乎常问的知识点,也是加分的点。 关于这部分内容,可能需要有一些具体的项目实践。在面试的过程中,结合具体自 身实践经历,才能更加深入透彻的描绘出来。 ( 顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找 ) https://github.com/xiangjiana/Android-MS 一、流程概述 启动流程: ① 点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起 startActivity 请求; ② system_server进程接收到请求后,向zygote进程发送创建进程的请求; ③ Zygote进程fork出新的子进程,即App进程; ④ App进程,通过Binder IPC向sytem_server进程发起 attachApplication 请求; ⑤ system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向 App进程发送 scheduleLaunchActivity 请求; ⑥ App进程的binder线程( ApplicationThread )在收到请求后,通过handler向主线 程发送LAUNCH_ACTIVITY消息; ⑦

Android9.0源码APP启动流程

半腔热情 提交于 2020-02-02 00:37:28
本文使用到的相关源码路径: Android9.0 APP启动源码 1、启动简介 1.1、启动流程: 点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求; system_server进程接收到请求后,向Zygote进程发送创建进程的请求; Zygote进程fork出新的子进程,即App进程; App进程,通过Binder IPC向sytem_server进程发起attachApplication请求; system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送创建Activity请求; App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送消息执行创建事务; 主线程在收到Message后,通过反射机制创建目标Activity,并回调Activity.onCreate()等方法; 到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面; 1.2、Activity启动流程图 1.3、其中涉及到的进程交互方式 Launcher进程与AMS所在的System_Server进程为AIDL方式;

android App启动过程

▼魔方 西西 提交于 2020-01-28 02:58:31
本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理。不介绍具体源码,仅仅构建一个大体框架。 启动流程: ①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求; ②system_server进程接收到请求后,向zygote进程发送创建进程的请求; ③Zygote进程fork出新的子进程,即App进程; ④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求; ⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求; ⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息; ⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。 ⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。 上面的一些列步骤简单介绍了一个APP启动到主页面显示的过程

[高级]Android Launcher研究(二)-----------Launcher为何物,究竟是干什么的?

折月煮酒 提交于 2020-01-27 01:44:25
在上一节,我讲了如何下载Launcher的教程,今天这一节,我将重点讲一下什么Launcher,究竟它是什么神秘东东? Launcher俗称HomeScreen,也就是我们启动Android手机,第一眼看到的应用程序,而这个应用程序是比较特殊而且任务艰巨的。 它负责了我们除了应用本身操作以外的所有操作,它负责了我们有几个桌面,点击应用图标启动应用程序,长时间按桌面出现上下文菜单, 长时间按桌面的图标出现垃圾箱,拖动应用图标重新定位等等,一系列的操作。我将截些图让大家更容易理解! 图1:开机画面,Laucher的主界面 图2:打开抽屉,列出所有我们的所安装应用 图三:长按图标,抽屉变成垃圾箱了 图四:手指向左滑动进入另一个桌面 我就先截这几个图让大家感受感受,图2中我们列出的所有应用并不包括诸如:Launcher,Widget等应用,是因为我们我们列出的应用仅仅是在AndroidManifest.xml配置文件有这样标记的应用(如下代码:) [java] view plain copy <activity android:name= ".HomeStyle" android:theme= "@android:style/Theme.NoTitleBar" android:label= "@string/app_name"> <intent-filter> <action

Spark学习之路 (十六)SparkCore的源码解读(二)spark-submit提交脚本[转]

懵懂的女人 提交于 2020-01-26 18:12:08
概述 上一篇主要是介绍了spark启动的一些脚本,这篇主要分析一下Spark源码中提交任务脚本的处理逻辑,从spark-submit一步步深入进去看看任务提交的整体流程,首先看一下整体的流程概要图: 源码解读 spark-submit # -z是检查后面变量是否为空(空则真) shell可以在双引号之内引用变量,单引号不可 #这一步作用是检查SPARK_HOME变量是否为空,为空则执行then后面程序 #source命令: source filename作用在当前bash环境下读取并执行filename中的命令 #$0代表shell脚本文件本身的文件名,这里即使spark-submit #dirname用于取得脚本文件所在目录 dirname $0取得当前脚本文件所在目录 #$(命令)表示返回该命令的结果 #故整个if语句的含义是:如果SPARK_HOME变量没有设置值,则执行当前目录下的find-spark-home脚本文件,设置SPARK_HOME值 if [ -z "${SPARK_HOME}" ]; then source "$(dirname "$0")"/find-spark-home fi # disable randomized hash for string in Python 3.3+ export PYTHONHASHSEED=0 #执行spark