Nic*_*hek 3 service android bind
表现:
<service android:name="com.example.MainService" android:process=":main_service"/>
Run Code Online (Sandbox Code Playgroud)
尝试在活动中绑定服务:
public class MainActivity extends Activity {
MainService mMainService;
private boolean mBound;
@Override
protected void onCreate(Bundle savedInstanceState) {
bindService(intentForMainService, mConnection, Context.BIND_AUTO_CREATE)
}
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className,
IBinder service) {
MainService.MainServiceBinder binder = (MainService.MainServiceBinder) service;//HERE IS EXCEPTION
mMainService = (MainService) binder.getService();
mBound = true;
}
public void onServiceDisconnected(ComponentName className) {
mMainService = null;
mBound = false;
}
};
@Override
protected void onStop() {
doUnbindService();
super.onStop();
}
void doUnbindService() {
if (mBound) {
unbindService(mConnection);
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
FATAL EXCEPTION: main
Process: com.hos.android, PID: 9001
java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.example.service.main.MainService$MainServiceBinder
at com.example.ui.base.BaseServiceActivity$1.onServiceConnected(MainActivity.java:34)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1335)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1352)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
Run Code Online (Sandbox Code Playgroud)
但是,当我删除此android:process =“:main_service”时,一切正常
步骤#1:编写一个AIDL文件,该文件描述客户端可以绑定到的服务要导出的接口。出于此答案的目的,我将调用此接口Foo,因此AIDL文件将为Foo.aidl。请注意,如果客户端和服务位于单独的Android Studio模块中,则两者都需要相同的Foo.aidl内容。
步骤#2:让服务的资料夹扩展Foo.Stub并覆盖上的方法Foo.Stub,而不要扩展IBinder。
步骤#3:在您的客户端中,通过中的onServiceConnected()将原始活页夹转换为Foo实例Foo.Stub.asInterface(service),并使Foo客户端具有AIDL定义的API。
这对示例项目对此进行了说明,在本例中,客户端和服务位于单独的应用程序中。
| 归档时间: |
|
| 查看次数: |
3623 次 |
| 最近记录: |