Android 服务仅在调试模式下启动

cha*_*lav 5 service android android-service android-studio android-service-binding

我创建了一个管理 XMPP 连接的服务。我的应用程序需要定期接收 XMPP 消息。一切似乎都按预期工作,但只有当手机插入 Android Studio 并且我在调试模式下运行应用程序时。当我拔掉电话,或者即使它已插入但我从电话而不是从 AS 启动应用程序,该服务似乎没有启动...

我确保在清单中正确声明了我的服务:

<service
  android:name=".xmpp.MyService"
  android:enabled="true" />
Run Code Online (Sandbox Code Playgroud)

其中 .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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我像这样开始我的服务:

// Start xmpp service here
Intent i = new Intent(getBaseContext(), MyService.class);
startService(i);
Run Code Online (Sandbox Code Playgroud)

谢谢!