gpt4 book ai didi

android - 如何强制调用 onServiceDisconnected()?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:56 24 4
gpt4 key购买 nike

通过调用绑定(bind)服务后:

bindService(new Intent(IBumpAPI.class.getName()), connection, Context.BIND_AUTO_CREATE);

出于调试目的,我需要调用 onServiceDisconnected()。

我知道 Android 系统会在与服务的连接意外丢失时调用此方法,例如当服务崩溃或被终止时,并且在客户端解除绑定(bind)时不会调用此方法。

所以我的问题是如何在我需要时强制调用 onServiceDisconnected() 以便我可以完成测试?

最佳答案

您需要启动您的服务,然后使用 Context.BIND_NOT_FOREGROUND 标志进行绑定(bind),然后停止它。这将导致调用 onServiceDisconnected。下面是 MainActivity 的代码(假设您定义了 TestService 服务),其中有两个按钮链接到调用 doBind 和 doUnbind 方法:

package com.example.servicetest;

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.util.Log;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {
private static final String TAG = "MainActivity";

private ServiceConnection connection = new ServiceConnection() {

@Override
public void onServiceDisconnected(ComponentName name) {
Log.d(TAG, "Service disconnected: " + name);
}

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.d(TAG, "Service connected: " + name);
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

public void doBind(View v) {
Intent i = new Intent(this, TestService.class);
startService(i);
bindService(i, connection, Context.BIND_NOT_FOREGROUND);
}

public void doUnbind(View v) {
Intent i = new Intent(this, TestService.class);
stopService(i);
}

}

此代码在您单击按钮时提供以下日志:

11-27 09:21:57.326: D/MainActivity(10724): Service connected: ComponentInfo{com.example.servicetest/com.example.servicetest.TestService}
11-27 09:21:58.099: D/MainActivity(10724): Service disconnected: ComponentInfo{com.example.servicetest/com.example.servicetest.TestService}

关于android - 如何强制调用 onServiceDisconnected()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com