startService未启动该服务。我从应用程序上下文中调用它,但是尽管从startService之前获取了控制台日志消息,但我没有从服务中获取任何一个。
public class AntoxOnFriendRequestCallback implements OnFriendRequestCallback {
private static final String TAG = "im.tox.antox.TAG";
public static final String FRIEND_KEY = "im.tox.antox.FRIEND_KEY";
public static final String FRIEND_MESSAGE = "im.tox.antox.FRIEND_MESSAGE";
private Context ctx;
public AntoxOnFriendRequestCallback(Context ctx) {
this.ctx = ctx;
}
@Override
public void execute(String publicKey, String message){
Log.d(TAG, "Friend request callback");
Intent intent = new Intent(this.ctx, ToxService.class);
intent.setAction(Constants.FRIEND_REQUEST);
intent.putExtra(FRIEND_KEY, publicKey);
intent.putExtra(FRIEND_MESSAGE, message);
this.ctx.startService(intent);
}
}
这是要点:https://gist.github.com/ollieh/ed93a647430645fd2ee0
使用getApplicationContext()在ToxService的第61行调用AntoxFriendRequestCallback我在AntoxFriendRequestCallback第15行的日志中看到“朋友请求回调”
我没有在ToxService的第140行的日志中看到“Constants.FRIEND_REQUEST”,也没有在MainActivity的第20行看到“test”。
如果您想查看完整文件,请访问: https://github.com/ollieh/Antox/tree/83eb974589a4664b2098bc0561fd0060960cfe22/app/src/main/java/im/tox/antox
答案 0 :(得分:1)
发现问题。之前在应用程序中使用DO_TOX意图调用了startService,并且在处理该问题的服务中,有一个无限循环旨在重复调用某些东西,但这阻止了任何新的startService()s在它们获得时工作排队,需要最后完成。我用ScheduledExecuterService替换了无限循环,现在它可以工作。
答案 1 :(得分:0)
您必须确定服务是否在“androidmanifest.xml”中声明,如:
<service
android:name="[your service class]"
android:enabled="true"
android:icon="@drawable/ic_launcher" >
</service>
和
Intent intent = new Intent(this.ctx, ToxService.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//add this line
intent.setAction(Constants.FRIEND_REQUEST);
intent.putExtra(FRIEND_KEY, publicKey);
intent.putExtra(FRIEND_MESSAGE, message);
this.ctx.startService(intent);