bindservice同步问题

kingecg 2009-11-30 11:04:01
请看代码:

package com.ewinfo.test;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;

public class Main extends Activity implements View.OnClickListener {
private iTService mService;
private ServiceConnection mConnection = new ServiceConnection() {

@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
// TODO Auto-generated method stub
mService=iTService.Stub.asInterface(service);
}

@Override
public void onServiceDisconnected(ComponentName name)
{
// TODO Auto-generated method stub

}

};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView txt=(TextView)findViewById(R.id.hello);
this.bindService(new Intent(iTService.class.getName()), mConnection, Context.BIND_AUTO_CREATE);//---1
if(this.mService!=null)
{
try
{
if(this.mService.isStart())
txt.setText("Service is Start");
else
txt.setText("Service not Start");
} catch (RemoteException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Button start=(Button)findViewById(R.id.start_service);
start.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
this.startService(new Intent(this,TService.class));
}
}

问题:如何在1处bind成功后让mService立即可用(即this.mService!=null成立)?
...全文
488 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobochan521 2011-06-16
  • 打赏
  • 举报
回复
你可以设置第二个事件响应,这个时候mService就不为空了
saintswordsman 2010-01-05
  • 打赏
  • 举报
回复
我也做过类似的测试。可能是进程同步的问题?你在onServiceConnected调用之后再操作mService就行了。
韩磊 2009-12-30
  • 打赏
  • 举报
回复
6楼正解。高焕堂老师形容得好:Don't call me, I'll call you back。
biaozai06 2009-12-30
  • 打赏
  • 举报
回复
在onCreate()函数里面不一定已经bind service成功,但是bind service成功后系统会立即回调onServiceConnected()方法,因此对service的处理要等到nServiceConnected()之后
kuangbenderen 2009-12-30
  • 打赏
  • 举报
回复
应该是在Start之后,Service才可以使用吧
lidongzhuo21 2009-12-22
  • 打赏
  • 举报
回复
顶三楼,还有就是可以在事件响应中用mservice
nj_dobetter 2009-12-21
  • 打赏
  • 举报
回复
貌似只有在
public void onServiceConnected(ComponentName name, IBinder service)
{
// TODO Auto-generated method stub
mService=iTService.Stub.asInterface(service);
}
中做后续工作了
hippyk 2009-12-20
  • 打赏
  • 举报
回复
onServiceConnected 方法不就是bind成功立马调用的吗?
誰伴我闖荡 2009-11-30
  • 打赏
  • 举报
回复
友情帮顶~~~

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧