我调用新浪微博的SDK,其中调用官方的APT方法--userTimelineIds获取微博ID,官方方法如下:
/** * 获取用户发布的微博的ID * * @param uid 需要查询的用户ID * @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0 * @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0 * @param count 单页返回的记录条数,默认为50 * @param page 返回结果的页码,默认为1 * @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false * @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0 * {@link #FEATURE_ALL} * {@link #FEATURE_ORIGINAL} * {@link #FEATURE_PICTURE} * {@link #FEATURE_VIDEO} * {@link #FEATURE_MUSICE} * @param listener 异步请求回调接口 */ public void userTimelineIds(long uid, long since_id, long max_id, int count, int page, boolean base_app, int featureType, RequestListener listener) { WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType); params.put("uid", uid); requestAsync(SERVER_URL_PRIX + "/user_timeline/ids.json", params, HTTPMETHOD_GET, listener); }
可以看出是用了AsynTask实现的异步回调。但是具体的requestAsync被新浪封装,无法查看和修改。 在我自己的Activity中调用如下:
mStatuseAPI.userTimelineIds(uid, 0L, 0L, 50, 1, false, StatusesAPI.FEATURE_ALL, new RequestListener() { //异步回调就是发起请求后,不等待响应就先去处理自己的响应 @Override public void onWeiboException(WeiboException error) { // TODO Auto-generated method stub //出错就打印出错信息 error.printStackTrace(); } @Override public void onComplete(String result) { // TODO Auto-generated method stub Log.i(TAG, result); //当括号内参数为(null)或者("")时,返回true,此方法既可以判断字符串也可以判断对象 if(!TextUtils.isEmpty(result)){ getWbList(result); }else{ Log.i(TAG, "获取不到微博ID或者此用户没有发过微博"); } } });
这里onComplete方法返回的result是在异步回调线程中的,请问怎么将数据拿到Activity中。这里由于requestAsync无法查看和修改。就不能重载AsynTask里的onPostExcate()方法传回结果。
请问该怎么在主线程中拿到数据?
接口回调