[Android Samples视频系列之ApiDemos] App-Activity-Reorder Activities

1.Demo说明与演示
Demo主要演示FLAG_ACTIVITY_REORDER_TO_FRONT的使用
效果图如下:

2.视频讲解
http://www.eyeandroid.com/thread-10717-1-1.html

3.Demo分析

Reorder Activities 示例有四个相关的Activitives: ReorderOnLaunch, ReorderTwo,ReorderThree, ReorderFour。其中ReorderOnLaunch为主Activity,ReorderOnLaunch启动ReorderTwo ,ReorderTwo启动 ReorderThree,ReorderThree启动 ReorderFour。 这时在Activity的”back stack”有如下状态:

13_1.png

ReorderFour 想再启动ReorderTwo, 这时用两种实现方法,一是在 RecordFour之上再启动一个新的 ReorderTwo ,这是startActivity的缺省行为。这是因为在AndroidManifest.xml

<activity android:name=”.app.ReorderTwo” />
<activity android:name=”.app.ReorderThree” />
<activity android:name=”.app.ReorderFour” />

.app.RecordTwo没有定义任何这个Intent的Flag。 比如有 FLAG_ACTIVITY_NEW_TASK,FLAG_ACTIVITY_CLEAR_TOP,FLAG_ACTIVITY_SINGLE_TOP,在这些情况下 Android将根据不同Flag设置来决定启动RecordTwo的方法,具体在后面的例子会有介绍。

在Reorder Activities例子中,是将“Back Stack”中的ReorderTwo移到栈顶,方法是在启动Intent时设置Intent.FLAG_ACTIVITY_REORDER_TO_FRONT。如果设置了FLAG_ACTIVITY_REORDER_TO_FRONT表示将“Back Stack”中指定的Activity移动到栈顶。

  1. Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);  
  2. intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);  
  3. startActivity(intent);  

此时栈如下图所示:

13_2.png




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 Theia 的 api-samples 抽离出来成为一个 npm 包,您可以按照以下步骤操作: 1. 创建一个新的 npm 包,可以使用以下命令: ``` mkdir theia-api-samples && cd theia-api-samples npm init ``` 2. 在新的 npm 包中创建一个名为 `theia-extension` 的文件夹。 3. 将 Theia 项目中的 `theia-samples/api-samples` 目录复制到 `theia-extension` 文件夹中。 4. 在 `theia-extension` 文件夹中创建一个 `package.json` 文件,并添加以下代码: ``` { "name": "@your-scope/theia-api-samples", "version": "1.0.0", "description": "API samples for Theia IDE", "main": "lib/index.js", "license": "MIT", "dependencies": { "@theia/core": "latest", "@theia/filesystem": "latest", "@theia/workspace": "latest" } } ``` 注意,在 `dependencies` 中添加了 `@theia/core`、`@theia/filesystem` 和 `@theia/workspace` 依赖项,这些依赖项是 api-samples 所需的。 5. 在 `theia-extension` 文件夹中创建一个 `tsconfig.json` 文件,并添加以下代码: ``` { "compilerOptions": { "module": "commonjs", "target": "es6", "lib": ["es6", "dom"], "declaration": true, "outDir": "lib" }, "include": ["src/**/*"], "exclude": ["node_modules", "**/*.test.ts"] } ``` 6. 在 `theia-extension` 文件夹中创建一个 `src` 文件夹,并在其中创建一个 `index.ts` 文件,并添加以下代码: ``` import { ContainerModule } from '@theia/core/lib/common'; import { FilesystemSample } from './filesystem-sample'; import { WorkspaceSample } from './workspace-sample'; export default new ContainerModule(bind => { bind(FilesystemSample).toSelf(); bind(WorkspaceSample).toSelf(); }); ``` 这将导出一个 `ContainerModule`,其中包含 `FilesystemSample` 和 `WorkspaceSample`。 7. 在 `theia-extension` 文件夹中创建一个 `filesystem-sample.ts` 文件,并添加以下代码: ``` import { injectable } from 'inversify'; import { UriAwareCommandHandler } from '@theia/core/lib/common/uri-command-handler'; import { Command } from '@theia/core/lib/common/command'; import { FileSystem } from '@theia/filesystem/lib/common/filesystem'; import URI from '@theia/core/lib/common/uri'; @injectable() export class FilesystemSample implements UriAwareCommandHandler { readonly id = 'filesystem-sample'; execute(uri: string): void { const fileSystem = new FileSystem(new URI(uri)); fileSystem.readFile('/example.txt').then(content => console.log(`Content of example.txt is: ${content}`) ); } isEnabled(uri: string): boolean { return true; } readonly command: Command = { id: this.id, label: 'Filesystem Sample' }; } ``` 这将创建一个 `FilesystemSample` 类,该类读取文件系统中的 `/example.txt` 文件,并在控制台中输出其内容。 8. 在 `theia-extension` 文件夹中创建一个 `workspace-sample.ts` 文件,并添加以下代码: ``` import { injectable } from 'inversify'; import { UriAwareCommandHandler } from '@theia/core/lib/common/uri-command-handler'; import { Command } from '@theia/core/lib/common/command'; import { Workspace } from '@theia/workspace/lib/browser/workspace-service'; import URI from '@theia/core/lib/common/uri'; @injectable() export class WorkspaceSample implements UriAwareCommandHandler { readonly id = 'workspace-sample'; execute(uri: string): void { const workspace = new Workspace(new URI(uri)); workspace.getRoot().then(root => console.log(`Workspace root is: ${root.uri}`) ); } isEnabled(uri: string): boolean { return true; } readonly command: Command = { id: this.id, label: 'Workspace Sample' }; } ``` 这将创建一个 `WorkspaceSample` 类,该类获取工作区的根目录,并在控制台中输出其 URI。 9. 在 `theia-extension` 文件夹中创建一个 `index.ts` 文件,并添加以下代码: ``` export * from './filesystem-sample'; export * from './workspace-sample'; export * from './container'; ``` 这将导出 `FilesystemSample`、`WorkspaceSample` 和 `ContainerModule`。 10. 在根目录中创建一个 `.npmignore` 文件,并添加以下代码: ``` # Ignore development files .vscode/ src/ test/ tsconfig.json tslint.json ``` 这将忽略开发文件,以减小 npm 包的大小。 11. 在根目录中创建一个 `.gitignore` 文件,并添加以下代码: ``` # Ignore development files .vscode/ src/ test/ tsconfig.json tslint.json # Ignore build output node_modules/ lib/ ``` 这将忽略开发文件和构建输出。 12. 使用以下命令在本地进行测试: ``` yarn yarn build ``` 13. 使用以下命令将包发布到 npm: ``` npm login npm publish --access=public ``` 这将将包发布到公共的 npm registry 中。 现在,您已经成功地将 Theia 的 api-samples 抽离出来成为一个 npm 包。其他开发人员可以使用 `npm install @your-scope/theia-api-samples` 命令安装并使用这个包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值