首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

关于Callback函数,通知UI的有关问题

2013-03-28 
关于Callback函数,通知UI的问题有一个以下的类class HYPERSIP_CALLBACK{public final static int HYPERSIP

关于Callback函数,通知UI的问题
有一个以下的类

class HYPERSIP_CALLBACK
{
public final static int HYPERSIP_EVENT_CALL_IN= 0;
public final static int HYPERSIP_EVENT_ANSWER= 1;
public final static int HYPERSIP_EVENT_ISVIDEODATA= 2;
public final static int HYPERSIP_EVENT_TERMINATED= 3;
public final static int HYPERSIP_EVENT_RENDERING= 4;

public void callback(int port, int event)
{
Log.e("HYPERSIP_API", "HYPERSIP_CALLBACK.callback, event = " + event);
switch(event)
{
case HYPERSIP_EVENT_RENDERING:
//will be transfer back to the JNI codes

case HYPERSIP_EVENT_TERMINATED:

break;
case HYPERSIP_EVENT_CALL_IN:
//这边会收到相信的消息,现在要通知更新UI,让主界面能调出一个新界面,这要如何实现
break;
case HYPERSIP_MESSAGE_INCOMING:
break;
}
}
}


这类是独立的,会在onCreate时去调用
 HYPERSIP_CALLBACK m_callback = new HYPERSIP_CALLBACK();
HYPERSIP_API.HYPERSIP_RegisterCallback(m_callback);

问题见上面的红色注明,因为以前是写C++,刚入手android,有些不太清楚,麻烦大家了。
[解决办法]
搞个handler来做这些事情吧
[解决办法]
一般我的做法是吧callback这个方法写在activity里,这个activity实现了接口
interface someInterface {
public void callback(int port, int event);//这个callback最终要在handler里调用
}

然后HYPERSIP_CALLBACK加一个属性譬如callbackListener,然后这个callbackListener就是相应的activity。

你这种做法很早以前我也用过

可以改成这样

class HYPERSIP_CALLBACK
{
    public final static int HYPERSIP_EVENT_CALL_IN            = 0;
    public final static int HYPERSIP_EVENT_ANSWER            = 1;
    public final static int HYPERSIP_EVENT_ISVIDEODATA        = 2;
    public final static int HYPERSIP_EVENT_TERMINATED        = 3;
    public final static int HYPERSIP_EVENT_RENDERING        = 4;
    private Handler handler;
    public void setHandler(Handler handler) {
        this.handler = handler;
}

    public void callback(int port, int event)
    {
        Log.e("HYPERSIP_API", "HYPERSIP_CALLBACK.callback, event = " + event);
        switch(event)
        {
        case HYPERSIP_EVENT_RENDERING:
            //will be transfer back to the JNI codes
             
        case HYPERSIP_EVENT_TERMINATED:
             


            break;
        case HYPERSIP_EVENT_CALL_IN:
            //<span style="color: #FF0000;">这边会收到相信的消息,现在要通知更新UI,让主界面能调出一个新界面,这要如何实现</span>
            handler.sendEmptyMessage(event);
            break;
        case HYPERSIP_MESSAGE_INCOMING:
            break;
        }
    }
}

热点排行