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

时间:2016-06-20 02:23:11

标签: android android-studio service android-service android-service-binding

我创建了一个管理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);

谢谢!

0 个答案:

没有答案