2

サービスを開始する Android プロジェクトがあります。次に、それを Android ライブラリに変換し、別の Android プロジェクトに追加しました。現在、メインの Android プロジェクトからそのサービスを自動的に開始しようとしていますが、迷っています。これはマニフェストからの私のコードです(ライブラリからすべてのクラスを追加しました):

  <service
            android:name="com.test.mqttclientserver.MQTTService"
            android:enabled="true"
            android:exported="false"
            android:label="Service" >
            <intent-filter>
                <action android:name="com.test.mqttclientserver.MQTTService" />
            </intent-filter>
        </service>

        <activity
            android:name="com.test.mqttclientserver.MQTTClient"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name="com.test.mqttclientserver.MQTTNotifier"
            android:label="@string/app_name" >
        </activity>

メイン プロジェクトのアクティビティで:

private boolean mBounded;
    private MQTTService mService;
    private MQTTConnectionStatus connectionStatus = MQTTConnectionStatus.INITIAL;  ..... public IBinder onBind(Intent intent) {
        return mBinder;
    }

    public MQTTConnectionStatus getConnectionStatus() {
        return connectionStatus;
    }

    ServiceConnection mConnection = new ServiceConnection() {

        public void onServiceDisconnected(ComponentName name) {
            Toast.makeText(SplashScreen.this, "Service is disconnected", 1000)
                    .show();
            mBounded = false;
            mService = null;
        }

        public void onServiceConnected(ComponentName name, IBinder service) {
            Toast.makeText(SplashScreen.this, "Service is connected", 1000).show();
            mBounded = true;
            LocalBinder mLocalBinder = (LocalBinder) service;
            mService = (MQTTService) mLocalBinder.getService();
        }
    };

    public void onStart(final Intent intent, final int startId) {
        System.out.println("onStart loading...");
        Intent mIntent = new Intent(this, MQTTService.class);
        bindService(mIntent, mConnection, BIND_AUTO_CREATE);
        System.out.println("onStart ending...");
    }

    protected void onStop() {
        super.onStop();
        if (mBounded) {
            unbindService(mConnection);
            mBounded = false;
        }
    }

これで十分ではありませんか?ヒントだけで十分です。お時間をいただきありがとうございます。

4

0 に答える 0