J2ME之家

匿名投稿 投稿指南 RSS订阅 J2ME通告:
搜索: 您的位置主页>Symbian>网络编程>

Series60 2nd应使用程序间的通信

2008-8-21 00:21:22 来源:j2me之家整理 责任编辑:本站整理 【 点击: 我要投稿 [进入论坛]

[J2ME之家-Symbian网络编程]

通过Symbian OS的Application Architecture Services可以进行应使用程序间的通信,主要使用到的类包括:TApaTaskList和TApaTask。

TApaTaskList:使用于访问设备中正在运行的任务。

TApaTask:表示设备中某个运行的任务,通过与程序关联的窗口组(window group)标识。

发送消息端:使用TApaTaskList找到等待接收消息的任务,TApaTaskList::FindApp()提供了两个重载版本,可以使用程序的标题,也可以使用程序的UID进行查找。获得接收消息的任务后就可以通过TApaTask:: SendMessage()发送消息了,它有两个参数,第一个参数使用于标识消息,第二个参数是一个描述符的引使用,可以使用来提供不同消息时附加的信息。

TUid uid( TUid::Uid( 0x0116C9D3 ) );

TApaTaskList taskList( iCoeEnv->WsSession() );

TApaTask task = taskList.FindApp(uid );

if( task.Exists() ) //判断任务是否正在运行

{

_LIT8( KTestMsg, "CustomMessage" );

TUid msgUid( TUid::Uid( 1 ) );

task.SendMessage( uid, KTestMsg );

}

接收消息端:MCoeMessageObserver是处理来自窗口服务器消息的接口类,因为CEikAppUi已经继承自MCoeMessageObserver,所以我们只需要在一个人的UI类中重现实现MCoeMessageObserver的唯一成员函数HandleMessageL()使用来处理接收到的消息即可:

MCoeMessageObserver::TMessageResponse CXXXAppUi::HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters)

{

_LIT( KFormatStr, "%x" );

TBuf<32> bufUid;

TBuf<32> bufPara;

bufUid.AppendFormat( KFormatStr, aMessageUid.iUid );

bufPara.Copy( aMessageParameters );

iEikonEnv->InfoWinL( bufUid, bufPara );

return MCoeMessageObserver::EMessageHandled;

}

补充:

在Seires60的文档上说TApaTask:: SendMessage()发送的消息会被CEikAppUI::ProcessMessageL()处理,实际上如果我们在UI类中重新实现ProcessMessageL(),只会接受到KUidApaMessageSwitchOpenFileValue和KUidApaMessageSwitchCreateFileValue这两个消息,其它值的消息不会被传到ProcessMessageL()中。

Tag:通信 程序 使用 TApaTaskList 任务 通过 运行 设备 TApaTask
责任编辑:本站整理
  • 用户名: (新注册)密码: 匿名:  请文明参与讨论,禁止漫骂攻击。
    评论总数: [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 法律声明 - RSS订阅 - 网站地图 - 返回顶部