android服务监听,android – 在基于服务的类中设置监听器

服务文档包含相当完整的示例代码,用于在您的应用中实现服务的另一部分可以绑定并进行调用:

只需将您的setUpdateListener()方法放在Service上,并在使用该服务获得ServiceConnected()后调用它.

所以你的代码是这样的:

public interface UpdateListener {

public void onUpdate(long value);

}

class LocalService {

// Like in the Service sample code, plus:

public static String ACTION_START = "com.mypackage.START";

private final ArrayList mListeners

= new ArrayList();

private final Handler mHandler = new Handler();

private long mTick = 0;

private final Runnable mTickRunnable = new Runnable() {

public void run() {

mTick++;

sendUpdate(mTick);

mHandler.postDelayed(mTickRunnable, 1000);

}

}

public void registerListener(UpdateListener listener) {

mListeners.add(listener);

}

public void unregisterListener(UpdateListener listener) {

mListeners.remove(listener);

}

private void sendUpdate(long value) {

for (int i=mListeners.size()-1; i>=0; i--) {

mListeners.get(i).onUpdate(value);

}

}

public int onStartCommand(Intent intent, int flags, int startId) {

if (ACTION_START.equals(intent.getAction()) {

mTick = 0;

mHandler.removeCallbacks(mTickRunnable);

mHandler.post(mTickRunnable);

}

return START_STICKY;

}

public void onDestroy() {

mHandler.removeCallbacks(mTickRunnable);

}

现在你可以启动服务让它开始计数,任何人都可以绑定它来注册一个监听器来接收回调计数.

虽然很难回答你的问题,但你并没有真正说出你真正想要完成的事情.有很多方法可以使用服务,根据您想要完成的内容,启动或绑定或混合两者.

现在,您可以根据示例再次实现客户端代码:

public class SomeActivity extends Activity implements UpdateListener {

private LocalService mBoundService;

private ServiceConnection mConnection = new ServiceConnection() {

public void onServiceConnected(ComponentName className, IBinder service) {

mBoundService = ((LocalService.LocalBinder)service).getService();

mBoundService.registerListener(this);

}

public void onServiceDisconnected(ComponentName className) {

mBoundService = null;

}

};

void doBindService() {

bindService(new Intent(Binding.this,

LocalService.class), mConnection, Context.BIND_AUTO_CREATE);

mIsBound = true;

}

void doUnbindService() {

if (mIsBound) {

if (mBoundService != null) {

mBoundService.unregisterListener(this);

}

unbindService(mConnection);

mIsBound = false;

}

}

protected void onDestroy() {

super.onDestroy();

doUnbindService();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值