小编ben*_*ill的帖子

AIDL如何运作?

我正在尝试实现AIDL,我只是不明白它如何工作的.通过这个我的意思是什么是方法调用的进展?

我不明白如何通过AIDL从服务到我的活动的对象.我一直在使用谷歌文档作为指导,但我很困惑.谢谢

更新:

在服务连接中,我有这些行,其中mCallback是IRemoteServiceCallback.

 public void onServiceConnected(ComponentName name, IBinder service) {
            mRemoteInterface = IRemoteInterface.Stub.asInterface(service);
            Log.v(TAG, "Interface bound.");
            try{
                mRemoteInterface.registerCallback(mCallback);
            }catch(RemoteException e){

            }
            Toast.makeText(MainActivity.this, "Remote Service Connected",
                    Toast.LENGTH_SHORT).show();
        }
Run Code Online (Sandbox Code Playgroud)

这是registerCallback,其中mCallbacks是一个

final RemoteCallbackList <IRemoteServiceCallback> mCallbacks

    = new RemoteCallbackList <IRemoteServiceCallback> ();
Run Code Online (Sandbox Code Playgroud)

.....

public void registerCallback(IRemoteServiceCallback callback)
                throws RemoteException {
            if(callback != null){
                mCallbacks.register(callback);
            }

        }
Run Code Online (Sandbox Code Playgroud)

IRemoteServiceCallback(mCallback)的唯一方法是:

public void valueChanged(int value) {
        mHandler.sendMessage(mHandler.obtainMessage(BUMP_MSG, value, 0));
    }
Run Code Online (Sandbox Code Playgroud)

我也有一个处理程序,但我不太清楚该怎么做:

 private Handler mHandler = new Handler() {
    @Override public void handleMessage(Message …
Run Code Online (Sandbox Code Playgroud)

java aidl android-service

2
推荐指数
1
解决办法
1940
查看次数

AsyncTask传递自定义对象

[我有一个自定义的parcelable对象车]

我看过AsyncTask但是关于这个主题还不太清楚:

我想将一个String(它是Vehicle的Vehicle ID)传递给AsyncTask,然后在doInBackground()中我有一个方法

mRemoteInterface.getTrackHistory();
Run Code Online (Sandbox Code Playgroud)

这给了我一个ArrayList.我想在onPostExecute()中启动一个活动,其中Vehicle ID和ArrayList都是额外的.

这是我无法做到的概述.问题是我不明白将对象INTO到asynctask,然后从doInBackground()到onPostExecute()和从onPostExecute()返回到原始的执行调用.

getTrackHistory.execute(这里应该去哪里?);

private class getTrackHistory extends
AsyncTask<String, Integer, Boolean **WHAT SHOULD GO HERE?**> {

    @Override
    protected Boolean doInBackground(
            String... params) {
        try {
            String vehicleID = params[0];
            listVehicleHistory = (ArrayList<Vehicle>) mRemoteInterface.getVehicleHistory(vehicleID);
        } catch (Exception e) {

            e.printStackTrace();
        }


    }




    @Override
    protected void onProgressUpdate(Integer... progress) {

    }

    @Override
    protected void onPostExecute(Boolean worked) {

        super.onPostExecute(worked);

        Intent intent = new Intent(MainActivity.this,VehicleInfo.class);

        intent.putExtra("Vehicle ID", toReturn);
        intent.putParcelableArrayListExtra("VehicleHistory", listVehicleHistory);

        startActivity(intent);
    }
Run Code Online (Sandbox Code Playgroud)

}

java android parcelable android-asynctask

0
推荐指数
1
解决办法
3941
查看次数