相关疑难解决方法(0)

宁静的API服务

我正在寻找一个可以用来调用基于Web的REST API的服务.

基本上我想在app init上启动服务然后我希望能够要求该服务请求URL并返回结果.与此同时,我希望能够显示进度窗口或类似的东西.

我已经创建了一个目前使用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 …
Run Code Online (Sandbox Code Playgroud)

api rest android web-services

220
推荐指数
6
解决办法
12万
查看次数

从Activity启动IntentService并在IntentService完成时刷新Activity

在我的Android应用程序中,我有一个带适配器的简单列表视图.有一个繁重的查询是用数据填充列表视图.所以我把它放到另一个线程中运行的IntentService.

IntentService通常单独运行,只是为了查询一些数据并将其插入SQLite数据库.

但现在我想有以下可能性:

  1. 该活动使用startService()启动IntentService.
  2. IntentService做了很多工作.
  3. 当IntentService完成时,它应该通知活动有关结果的信息,以便可以刷新活动以显示新数据.

这可能吗?我在这个主题的Stack Overflow上阅读了很多问题.但在每个问题中,都有另一种解决方案.所以我想问你们所有人:哪种解决方案最符合我的目的?

  • 将IntentService绑定到Activity似乎不是最佳解决方案,因为可能存在与活动的配置更改等冲突.正确吗?
  • 这篇博文建议使用带有Parcelables的AIDL - 这对我来说听起来非常复杂.有一种更简单的方法,不是吗?
  • 可以在活动中设置广播接收器,并在完成后在IntentService中触发此广播.
  • 有人说你应该使用createPendingResult()将PendingIntent传递给IntentService.如果IntentService在其附加内容中发现PendingIntent,则使用它来触发Activity中的onActivityResult().这是选择的方式吗?

multithreading android broadcastreceiver android-intent android-activity

27
推荐指数
3
解决办法
2万
查看次数

与服务中的活动(LocalService)进行通信 - Android最佳实践

常见方案 - 具有后台服务的活动用于轮询服务器.

该服务将通过AlarmManager定期运行,并执行活动任务(用户点击按钮,从服务器获取内容).

我想知道这里的最佳做法.我认为最好的设计是Android LocalService示例:http: //developer.android.com/reference/android/app/Service.html#LocalServiceSample

但是在示例中,Activity具有对活动的引用,mBoundService但没有反向连接(Service无法调用Activity).

服务调用活动的最佳方式是什么?

我是否使用Intents,BroadcastReceivers,Messages?怎么样?

service android communication android-intent android-activity

20
推荐指数
1
解决办法
3万
查看次数

如何在Android中绑定此服务?

这是我的代码Activity.启动一个Intent,然后一个Connection,对吧?

hello_service = new Intent(this, HelloService.class);
hello_service_conn = new HelloServiceConnection();
bindService( hello_service, hello_service_conn, Context.BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)

但我的问题是......连接内部是什么?

   class HelloServiceConnection implements ServiceConnection {
        public void onServiceConnected(ComponentName className,IBinder boundService ) {

        }
        public void onServiceDisconnected(ComponentName className) {

        }
    };
Run Code Online (Sandbox Code Playgroud)

有人能告诉我在ServiceConnectedonServiceDisconnected上添加了哪些代码?

我只想要一个基本的连接,以便我ActivityService他人可以互相交谈.

编辑:我找到了一个很好的教程,我实际上可以关闭这个问题,除非有人想回答.http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

java service android android-intent android-activity

9
推荐指数
2
解决办法
4万
查看次数

Android:IntentService:如何:从Activity传递回调到IntentService?

我想将回调传递给IntentService.这是我目前的代码:

我的回调界面

import android.os.Message;

public interface SampleCallback {

    public void doSomethingFromCurrentThread();

    public void doSomethingFromUIThread(final Message msg);
}
Run Code Online (Sandbox Code Playgroud)

我的IntentService

import android.app.IntentService;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

public class SampleCallbackIntentService extends IntentService {
    private final String LOG_LOGCAT_TAG = "SampleCallbackIntentService";
    private final SampleCallback _callback;
    private Handler _handler;

    public SampleCallbackIntentService(String name, SampleCallback callback) {
        super(name);
        _callback = callback;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        // initialize variables for pause & resume thread
        _mPauseLock = new Object();
        _mPaused = false;
        _mFinished …
Run Code Online (Sandbox Code Playgroud)

android callback

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