我一次运行几个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对象并将结果加载到listview中:
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监视器中的当前线程,但我不确定如何使用它。