看到很多讲Activity和Service通信的问题,为什么搞那么复杂呢?Service从一个接口派生,Activity也从一个接口派生,bindService的时候,利用返回的接口,可以调Service的方法,没有问题。在Service实现的接口添加一个函数,传Activity实现的接口进去,Service内部保存这个指针,当Service有事件时,使用这个保存的接口指针调Activity的方法(当然是实现接口的方法),如果仅仅是用Log.d查看字串,没有问题;但是如果使用Activity的方法操作这个函数,程序立马崩溃掉。原因在于,UI和Service是不同的,带UI的Activity只能在它内部自己调用,外部调用立刻出错,不同的Activity也是这样,不能直接互相调。但是UI可以调Service的方法。请问应该用什么方法来同步。
解决方案 »
- 用Usb host方式获得usb设备列表为什么为空!!!
- gcc -E 在 android
- android 重启成功,关机不成功
- Android开发中能否向SD卡中导入中文文件名的文件?
- Android SDL_app:emulator.exe 错误
- 设计一个button,点击打开指定的SD卡文件夹,怎么破
- 新手求教,onCreate多次调用问题
- 关于Fragment 中 使用ViewPager 中使用的Fragmet不显示内容
- android翻译问题
- 安卓7.1.2可以调用VS2003发布的webservice吗
- 如何像android源码一样分段加载应用程序列表?
- 在layout文件中心写了xml布局文件保存后在资源里找不到
interface IActivity{
abstract void OnRecv(String str);
}
interface IService{
abstract void SetString(String str);
abstract void RegisterCallback(IActivity ia);
}
public class Main extends Activity implements IActivity{
void OnRecv(Strng str){
Log.d("",str);//如果改成setTitle之类的方法就会出错。
}
}
public class MyService extends Service implements IService{
private IActivity iActivity = null; public void SetString(String str){
}
public void RegisterCallback(IActivity ia){
iActivity = ia;
}
private void onRecv(){
iActivity.OnRecv("OK");//回调Activity的方法。
}
}