Прежде всего, я скажу, что я нашел много вопросов, почти идентичных этому здесь, на SO уже, но ни один из них (который я мог найти) не решил проблему. Вот некоторые из них я смотрел:Android: onServiceConnected не вызывается после bindService
ServiceConnection.onServiceConnected() never called after binding to started service onServiceConnected never called after bindService method ServiceConnection::onServiceConnected not called even though Context::bindService returns true? OnServiceConnected not getting called
Вот часть моего андроида кода приложения:
//Local service interface
private INetworkQueryService myNetworkQueryService = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
Intent intent = new Intent(this, NetworkQueryService.class);
startService (intent);
bindService (new Intent(this, NetworkQueryService.class), myNetworkQueryServiceConnection,
Context.BIND_AUTO_CREATE);
}
//Service connection
private final ServiceConnection myNetworkQueryServiceConnection = new ServiceConnection() {
/** Handle the task of binding the local object to the service */
public void onServiceConnected(ComponentName className, IBinder service) {
myNetworkQueryService = ((NetworkQueryService.LocalBinder) service).getService();
// as soon as it is bound, run a query.
loadNetworksList();
}
/** Handle the task of cleaning up the local binding */
public void onServiceDisconnected(ComponentName className) {
myNetworkQueryService = null;
}
public void loadNetworksList() {
// delegate query request to the service.
try {
myNetworkQueryService.startNetworkQuery(myCallback);
} catch (RemoteException e) {
}
}
};
/**
* This implementation of INetworkQueryServiceCallback is used to receive
* callback notifications from the network query service.
*/
private final INetworkQueryServiceCallback myCallback = new INetworkQueryServiceCallback.Stub() {
@Override
public void onQueryComplete(List<NetworkInfo> networkInfoArray,
int status) throws RemoteException {
displayNetworks(networkInfoArray, status);
}
/** place the message on the looper queue upon query completion. */
};
Как вы можете С.Ю., myNetworkQueryServiceConnection должен вызывается из метода bindService (находится в onCreate()). Это (теоретически) также должно работать onServiceConnected (я думаю), но я поставил точку останова в своем коде и никогда не останавливается внутри этого метода. Я выполнил некоторую отладку, и bindService возвращает false, поэтому по какой-то причине она не успешно связывает ее.
Это мой первый раз, когда мне приходилось связывать службы на Android, поэтому я уверен, что что-то пропустил. Я надеюсь, кто-то может указать на ошибку.
Сообщите мне, если вам не хватает какой-либо информации. Я не уверен, что вам может понадобиться, и я действительно не могу опубликовать весь код приложения здесь.
EDIT: Я продолжаю читать информацию о регистрации службы в манифесте, но не могу понять, где и как это будет сделано? Вот манифест для этого проекта:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tek15.cellemrmonitor"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Я, конечно, не вижу ничего об услуге, но я предполагаю, что я не знаю, как добавить его.
У вас есть эта служба, правильно зарегистрированная в манифесте? FWIW, вот пример приложения, демонстрирующий 'bindService()' для локальной службы: https://github.com/commonsguy/cw-omnibus/tree/master/Binding/Local – CommonsWare
Я все время видел, что всплывает в ответах на другие потоки, но я не мог понять, где в манифесте он будет зарегистрирован, и как. Возможно, это то, чего мне не хватает? Я собираюсь добавить свой манифест в исходное сообщение – DerStrom8
AndroidManifest.xml добавлено – DerStrom8