应用的功能是这样的,activity提供一个界面,通过它来启动一个service来调用已经用jni封装过的so,现在需要做的事情是,service中一个线程来检测jni里一个返回值,如果返回错误给用户一个提示,并且可以让用户选择重新运行还是退出。现在用的是broadcastreciver,在service中广播,activity中接收,然后用dialog提示用户,但是这么做有个问题,就是,这个dialog只能出现在activity中,而现在需要再任何程序下,都能出现这个提示,用什么实现比较好??

解决方案 »

  1.   

    你的意思就是怎么把dialog放到service中。
    下面是几个方法:
    1,搞一个handlerthread,定义一个hanlder,attach到handlerthread上,在这个hanlder的handlemessage中,应该是可以显示dialog的。
    2, 自己搞一个floatingview,利用windowmanager.addview,把floatingview添加进去。自己定义一个layout,其实就是模仿一下dialog的实现。
    3. dialogActivity,需要的时候service就启动这个dialogactivity.三个方法,自己选一个吧
      

  2.   

    还有一个方法,直接用alertdialog,这个方法最简单
      

  3.   

      用线程来检测返回值不太合理吧。往jni层注册一个回调,把这个int值回调给service,service自行处理这个值,这样做比较合理。另外,让service一直在后台运行,这样就可以随时弹出对话框了。
      

  4.   

    jni层不想改动,所以就用线程检测了,因为c代码没做心跳,就在线程里处理连接状态了...