- @Kroll.proxy
- public class MyProxy extends KrollProxy {
- @Kroll.method(runOnUiThread=true)
- public int doSomething() {
- return 100;
- }
- }
官方地址:Android Module Development Guide
烈山网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联公司自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
摘要
本指南教你如何在Titanium中开发Android模块从而扩展Titanium的功能. 在本指南中,你将会学习到以下几点:
Titanium Android模块开发指南
为了使用Android模块SDK, 你必须具有Android SDK相关的知识. 本指南将假定你知道如何使用原生的Android SDK进行开发.
前提条件
环境设置
参照 Titanium命令行工具 完成环境设置.
创建一个模块
要创建一个模块,我们需要传递一些参数给titanium命令行工具.
对于一个Android, 我们以如下参数创建一个模块:
引用
titanium create --platform=android --type=module --name=$MODULE_NAME --id=$MODULE_ID --android=$ANDROID_SDK |
作为一个示例,我们创建了一个运行简单的加减操作的模块,命名为“calc”,给定其ID为“org.appcelerator.calc”,并把Android SDK的路径指向/path/to/android-sdk
引用
titanium create --platform=android --type=module --name=calc --id=org.appcelerator.calc --android=/path/to/android-sdk |
如果运行成功,应该能在当前目录下看到新创建的 calc 子目录了.
模块项目目录布局
在模块目录中, 你可以看到刚生产的文件和目录树:
Eclipse集成
TItanium 会创建导入为Eclipse项目所需要的文件, 在Eclipse 执行如下操作导入calc项目:
构建模块zip
dist目录下的zip包是模块的可分发形式, 它通常遵循的命名模式为$MODULE_ID-android-$MODULE_VERSION.zip
其中包含:
通过Ant从命令行构建
如果ant已经在PATH中, 你可以简单地在模块顶层目录执行, 你会看到如下输出:
引用
$ ant Buildfile: /Users/marshall/Code/test/test_modules/calc/build.xml init: process.annotations: compile: dist: BUILD SUCCESSFUL |
从Eclipse构建
如果你米有安装Ant,或者你更愿意使用Eclipse,参照下面的步骤:
模块分发
要再TitaniumMobile应用程序中使用模块,参照下面的步骤:
[list]
Xml代码
- [*]
- [*]
$MODULE_ID - [*]
- [*]
org.appcelerator.calc - [*]
- var Module = require('$MODULE_ID');
- [*]// For example, to load the calc module:
- [*]var Calc = require('org.appcelerator.calc');
用嵌入的Example项目进行测试
使你的模块能够工作,最简单的方法是在example/app.js文件中编写代码,并使用ant运行和测试模块代码.example目录等同于应用程序的Resources目录.
运行示例项目的过程非常简单:
运行Android模拟器
从命令行在模块项目木下运行:
引用
ant run.emulator |
你应该会在控制台中看到模拟器的输出!
在Eclipse中配置调用信息:
运行Example项目
Once the emulator is up and running, you just need to wait for the unlock screen to appear, and you can start running your project. Make sure to unlock the screen so you’ll see the example project when it launches.
From command line, run this inside your module project:
引用
ant run |
在Eclipse中设置启动配置:
Follow the same steps from the Launch configuration setup above, but use the run target instead of the run.emulator target. You should also name the configuration something different, for example run calc project
疑难排除技巧:
如果你运行对象是超时,试着找到emulator,然后通过以下命令重启ADB服务:
$ $ANDROID_SDK/tools/adb kill-server $ $ANDROID_SDK/tools/adb start-server |
到这里,如果你成功的运行了模块例子工程的话,你将在模拟器中看到默认的”hello world“应用:
生成模块和Example代理
作为初始创建项目的一部分,Titanium产生两个示例项目中使用的类:
产看这些代码来了解一下Modules和Proxies是怎么样跟Javascript通信的,在下一节将简要介绍了Titanium 和Kroll的API。
Android Titanium API
模块和代理(Kroll part 1)
模块
代理
导出方法和属性(Kroll part 2)
方法
代理和模块的方法通过 @Kroll.method 符号标注进行导出. 下面是一个简单的例子:
Java代码
- @Kroll.method
- public String getMessage() {
- return "Hello World";
- }
如果你导出的方法要求当前Activity, 你可以添加 KrollInvocation 作为第一个参数:
Java代码
- @Kroll.method
- public String getMessage(KrollInvocation invocation) {
- Activity activity = invocation.getTiContext().getActivity();
- }
方法还有许多其他的选项,详细信息可查看@Kroll.methodJavadoc
属性
属性可以以两种不同的形式导出:
1,getter/setter方法通过@Kroll.getProperty和@Kroll.setProperty符号导出,Getter/setter方法还可以被导出为Kroll方法(这是在Titanium中常用的模式)
2,使用Kroll.property符号导出为一个对象字段(使用反射,速度稍慢)
该示例为message属性导出了一个getter和setter,以及同名的方法:
Java代码
- @Kroll.getProperty @Kroll.method
- public String getMessage() {
- return "Hello World";
- }
- @Kroll.setProperty @Kroll.method
- public void setMessage(String message) {
- Log.d(TAG, "Tried setting message to: " + message);
- }
在Javascript中可以这样使用:
Js代码
- var object = //..
- object.message = "hi"; // or
- object.setMessage("hi");
常量
常量是 @Kroll.module 中的以及静态属性, 该字段以 “@Kroll.constant” 符号标注, 必须是static和final, 这儿有一个例子:
Java代码
- @Kroll.module
- public class MyModule extends KrollModule {
- @Kroll.constant
- public static final int CONSTANT = 100;
- }
常量可以直接使用: Ti.My.CONSTANT == 100
视图
在Titanium中视图必须要有2个class::
视图代理: TiViewProxy的子类
视图实现: TiUIView的子类
作为了一个简单的例子,参考Button 的实现方法ButtonProxy 和TiUIButton
重量级和轻量级窗口
当用户使用Titanium.UI.createWindow API 创建一个窗口时, 运行一些检查来告知是否创建应该是 heavy weight:
线程安全
从Javascript的Context(潜在的任何Activity或Thread)调用一个方法或者属性的话,在设计你的API的时候,很重要的一点是保证线程安全。
为了确保一个方法是在UI线程上执行, 可以参考 @Kroll.method#runOnUiThread(). 以下是例子:
Java代码
分享名称:Titanium中Android模块开发指南
网站URL:http://www.gawzjz.com/qtweb2/news49/15199.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联