我创建了一个管理XMPP连接的服务。我的应用程序需要定期接收XMPP消息。一切似乎按预期工作,但只有在手机插入Android Studio并且我以调试模式运行应用程序时。当我拔掉手机,或者即使插上电话但我从手机而不是从AS启动应用程序时,服务似乎无法启动......
我确保在清单中正确声明了我的服务:
<service
android:name=".xmpp.MyService"
android:enabled="true" />
其中.xmpp是我主程序包中的子包。
这是我的服务
public class MyService extends Service {
public static ConnectivityManager cm;
public static MyXMPP xmpp;
private static String LOG_TAG = "MyService";
@Override
public IBinder onBind(final Intent intent) {
Log.v(LOG_TAG, "in onBind");
return null;
}
@Override
public void onCreate() {
super.onCreate();
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (CurrentInfo.getUser() != null) {
xmpp = MyXMPP.getInstance(MyService.this, getResources().getString(R.string.xmpp_url), CurrentInfo.getUser().getJabberId(), getString(R.string.xmpp_password));
xmpp.connect("onCreate");
}
}
@Override
public int onStartCommand(final Intent intent, final int flags,
final int startId) {
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
xmpp.connection.disconnect();
}
public static boolean isNetworkConnected() {
return cm.getActiveNetworkInfo() != null;
}
}
我开始这样的服务:
// Start xmpp service here
Intent i = new Intent(getBaseContext(), MyService.class);
startService(i);
谢谢!