удаленный сервис: невозможно запустить сервис - PullRequest
0 голосов
/ 19 марта 2012

Я создаю простой удаленный сервис с файлом aidl. Служба и активность находятся в двух разных виртуальных устройствах. Услуга не доступна с активностью. Я думаю, что служба не запускается. В представлении DDMS моя служба не отображается, и LogCat запускает ошибку: невозможно запустить службу. Intent {cmp = com.michelService.BIND pkg = com.michelService}: не найдено

СПАСИБО за помощь!

Мой AndroidManifest.xml:

*<?xml *version*="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.michelService"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="13" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <service android:name=".ServiceHello"    android:exported="true" >             
        <intent-filter>
            <action android:name="com.michelService.BIND"></action>   
        </intent-filter> 
        </service> 
    </application>
</manifest>*

Моя деятельность: CallServiceActivity.java:

public class CallServiceActivity extends Activity {
    /** Called when the activity is first created. */
    IServiceHello service;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout layout = new LinearLayout(this);
        TextView tv1 = new TextView(this);

        Intent intent = new Intent();
        intent.setAction("com.michelService.BIND");
        intent.setPackage("com.michelService");
        startService(intent);

        ServiceConnection con = new ServiceConnection(){

            @Override
            public void onServiceConnected(ComponentName arg0, IBinder binder) {
                service = IServiceHello.Stub.asInterface(binder);
            }

            @Override
            public void onServiceDisconnected(ComponentName arg0) {
                service= null;

            }

        };

        bindService(intent, con, Context.BIND_AUTO_CREATE);

        try {
            tv1.setText(service.sayHello("Michel"));
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            tv1.setText("" + e);
        }
        layout.addView(tv1);
        setContentView(layout);

    }
}

1 Ответ

1 голос
/ 19 марта 2012

Служба и действие находятся на двух разных виртуальных устройствах.

Тогда оно не работает.Вы можете пользоваться услугами только на одном устройстве.Если вы хотите установить связь с другим устройством, то вы должны сделать это через сеть.

Возможно, вы захотите запустить оба на одном и том же.

Удаленное обслуживание означает "на другом Процесс"здесь.Вы используете AIDL для доступа к другому процессу.Разные процессы немного похожи на разные устройства, так как они не разделяют общую среду, и связь между ними также похожа на сетевую связь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...