为了账号安全,请及时绑定邮箱和手机立即绑定

RESTfulAPI服务

RESTfulAPI服务

泛舟湖上清波郎朗 2019-07-11 12:59:11
RESTfulAPI服务我正在寻找一个服务,我可以使用它来调用一个基于Web的RESTAPI。基本上,我想在app init上启动一个服务,然后我希望能够要求该服务请求一个url并返回结果。同时,我希望能够显示一个进度窗口或类似的东西。我目前已经创建了一个使用IDL的服务,我在某个地方读到,您只需要这个来进行跨应用程序的通信,所以认为这些需要去掉,但不确定如何在没有IDL的情况下进行回调。当我撞到post(Config.getURL("login"), values)这个应用程序似乎暂停了一段时间(似乎很奇怪-认为服务背后的想法是运行在不同的线程上!)目前,我有一个带有POST和获取http方法的服务、几个AIDL文件(用于双向通信)、一个ServiceManager,它处理服务的启动、停止、绑定等,我正在动态地创建一个Handler,并根据需要为回调编写特定的代码。我不希望任何人给我一个完整的代码基础来处理,但是一些提示将是非常感谢的。代码(大部分)完整:public class RestfulAPIService extends Service   {final RemoteCallbackList<IRemoteServiceCallback> mCallbacks = new RemoteCallbackList<IRemoteServiceCallback>();  public void onStart(Intent intent, int startId) {     super.onStart(intent, startId);}public IBinder onBind(Intent intent) {     return binder;}public void onCreate() {     super.onCreate();}public void onDestroy() {     super.onDestroy();     mCallbacks.kill();}private final IRestfulService.Stub binder = new IRestfulService.Stub() {     public void doLogin(String username, String password) {         Message msg = new Message();         Bundle data = new Bundle();         HashMap<String, String> values = new HashMap<String, String>();         values.put("username", username);         values.put("password", password);         String result = post(Config.getURL("login"), values);         data.putString("response", result);         msg.setData(data);         msg.what = Config.ACTION_LOGIN;         mHandler.sendMessage(msg);     }     public void registerCallback(IRemoteServiceCallback cb) {         if (cb != null)             mCallbacks.register(cb);     }};private final Handler mHandler = new Handler() {     public void handleMessage(Message msg) {         // Broadcast to all clients the new value.         final int N = mCallbacks.beginBroadcast();         for (int i = 0; i < N; i++) {                    }             }         }     }
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

另外,当我点击POST(Config.getURL(“登录”),值)时,应用程序似乎暂停了一段时间(似乎很奇怪-认为服务背后的想法是运行在不同的线程上!)

不,你必须创造一根线你自己,一个本土化默认情况下,服务在UI线程中运行。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 661 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信