前一节利用 PackageManager 查询系统所以有 Main 的 Activity,显示实现点击后进入各应用,创建显式 Intent 进行打开。
- 创建监听器
- ResolveInfo 对象获取 activity 的包名与类名 。从 ResolveInfo 对象的 ActivityInfo 中获取
|
|
任务与后退栈
任务:通俗讲就是用户关心的 activity栈,当我们点击打开一个应用就将主 activity弹到栈顶,用户看到的是栈顶,当我们点击后退键,回到系统主屏幕
通过几个场景理解任务与栈
场景1:我们点开应用在应用中点击启动不同的 activity 返回键总是能返回到我们上一个页面,这就是 activity 栈
场景2:任务键的切换,玩过 Android 的用过
场景3:可能会想到底要说什么 o(╥﹏╥)o 说明这个自动其他应用的任务与栈与其他的不同:当我们在这个应用点击其他应用,应该会两个任务事实上当启动其他的 activity栈 添加到了自己的任务中
如果我们需要在启动新任务的 activity ,可以让应用拥有自己的任务,用户可以在运行的应用间自由切换,需要给 Intent 添加一个标志,作用是告诉系统我要让启动的activity 创建一个任务
|
|
让 NerdLauncher 应用 作为设备主屏幕
这好比 是吧这个应用设置为主屏幕,其他应用返回的 栈底部 activty ,一般设置为主屏幕的为主题应用。
现在你的手机主题 就是这个应用了。如果不小心设置了可以点击 Setting 应用——> Apps——> 选择这个应用请出默认 ——> 点击主屏幕 选择系统,然后删除该应用
获取各个应用的图标
ResolveInfo.loadLabel() 方法获取各个 activity 名称,ResolveInfo还提供 loadIcon() 的方法,为每个应用加载显示图标
- 创建布局模板 list_item (一个视图一个文本)
- ViewHolder 使用这个布局加载
- 实例化两个控件
- 包名前面通过 loadLabel() 方法获取 现在通过 loadIcon() 获取图标
这个很简单就不上代码了。
本应用 GtiHub 地址:NerdLauncher 应用