gpt4 book ai didi

android - 服务上的 OnBind() 总是返回 False - Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:11:49 26 4
gpt4 key购买 nike

我正在尝试绑定(bind)服务,但 onBind() 总是返回 false。

这是ServiceConnection的代码-

private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
// This is called when the connection with our service has been established,
// giving us the service object we can use to interact with our service.
mBoundService = ((ScheduleService.ServiceBinder) service).getService();
}

public void onServiceDisconnected(ComponentName className) {
mBoundService = null;
}
};

这是对 bindService() 的调用 -

boolean test = getApplicationContext().bindService(new Intent(this, ScheduleService.class), mConnection, Context.BIND_AUTO_CREATE);

这是Manifest中服务的声明-

<service android:name=".Notifications.ScheduleService" android:enabled="true"/>

我已经阅读过有关该主题的先前问题,但找不到答案(尝试将 Activity 上下文与 Application 上下文切换,但没有帮助)。

我正在使用 Frgaments 和 ActionBarSherlock,我的 Activity 扩展了 SlidingFragmentActivity(这就是我使用应用程序上下文的原因,这没有帮助)。

编辑 - 这是我要启动的服务的代码 -

public class ScheduleService extends Service {

/**
* Class for clients to access
*/
public class ServiceBinder extends Binder {
public ScheduleService getService() {
return ScheduleService.this;
}
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("ScheduleService", "Received start id " + startId + ": " + intent);

// We want this service to continue running until it is explicitly stopped, so return sticky.
return START_STICKY;
}

@Override
public IBinder onBind(Intent intent) {
return mBinder;
}

// This is the object that receives interactions from clients. See
private final IBinder mBinder = new ServiceBinder();

/**
* Show an alarm for a certain date when the alarm is called it will pop up a notification
*/
public void setAlarm(Calendar c) {
// This starts a new thread to set the alarm
// You want to push off your tasks onto a new thread to free up the UI to carry on responding
new AlarmTask(this, c).run();
}
}

任何帮助将不胜感激。谢谢。

最佳答案

ScheduleService 的完全限定类名是什么(即包括完整的包名)?

我在问这个,因为在您的 AndroidManifest.xml 文件中,您的服务名称是 .Notifications.ScheduleService,这看起来有点奇怪:

这告诉我要么

  • 包名称(的最后一部分)包含一个大写性格……不太好。
    如果是这种情况,我希望使用 .notifications.ScheduleService
  • ScheduleService 在名为 Notifications.java 的文件中定义。我希望 .Notifications$ScheduleService 如果是这种情况(美元符号而不是句点)。

关于android - 服务上的 OnBind() 总是返回 False - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15410767/

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