1

我一次运行了几个 AsyncTasks,它似乎导致了一些特殊的问题,比如渲染按钮不可用。一个 AsyncTask 负责保持会话活动,并在每个活动的 onResume() 中运行:

public class SessionKeepAliveTask extends AsyncTask<Void, Void, Void> {

    private Context mContext;

    public SessionKeepAliveTask(Context context) {
        mContext = context;
    }

    @Override
    protected Void doInBackground(Void... params) {

        try {

            ... create httpClient, set headers with cookie, 
            send request, process results     
            ...

然后我有另一个 AsyncTask 用于简单地从服务器获取 JSON 对象并将结果加载到列表视图中:

public class ClaimSearchService extends AsyncTask<HashMap<String,String>, Void, Void> {

    protected Context mContext;
    private Listener mListener = null;

public ClaimSearchService(Listener listener, Context context) {
    super();
    mListener = listener;
    mContext = context;

}

@Override
protected Void doInBackground(HashMap<String,String>... params) {


    try {
        ...send the request, get the results, pass them to listener for 
        processing in another activity

如果我不运行 SessionKeepAliveTask 任务,那么我的搜索服务将按预期工作,但如果我这样做,我会遇到一些不可预知的错误。我更感兴趣的是知道如何开始调试这个问题,而不是一个可靠的答案,但显然如果有人在此之前遇到这个问题会很棒。我可以在 DDMS 监视器中看到当前线程,但我不确定如何使用它。

4

0 回答 0