由大量无休止的AsyncTasks引起的超级慢应用程序

时间:2010-08-11 04:28:46

标签: java android multithreading blocking

我不知道,但我的应用程序有时会完全停止(没有响应触摸屏幕)我认为我遵循了线程的所有规则,但我的应用程序显然正在减慢Sprint EVO!我从来没有像我自己那样使用app。我没有得到一个ANR对话框,但我想我应该得到一个。我不知道如何使这个应用程序像我曾经使用的其他应用程序一样运行 - 不要冻结。拥有一个HttpClient并为所有想要使用它的活动保留静态引用是不是一个好主意?我曾经每次创建一个新的,并认为将其改为一个加速。我的AsyncTasks都没有结束。如果我去活动A - > B - > C - > D第一次顺利。我可以回来但是当我回到A时,它完全冻结,没有任何反应。当我拍摄截图时。我真的不知道我做错了什么。我应该手动杀死Activity.onPause()上的AsyncTasks吗?

1 个答案:

答案 0 :(得分:0)

我不确定你的Activity冻结......它让我觉得你在AsyncTask的onPreExecuteonPostExecute()中进入了一个无限循环,但谁知道呢。

但我知道,如果您要在多个主题之间共享ThreadSafeClientConnManager,则应该使用HttpClient

    // Create the client.  We can cache and reuse this client because we're using a
    // ThreadSafeClientConnManager, which will create a pool of connections for us 
    // to use across multiple threads.
    HttpParams params = new BasicHttpParams();
    HttpConnectionParams.setSoTimeout(params, TIMEOUT);
    HttpConnectionParams.setConnectionTimeout(params, TIMEOUT);
    SchemeRegistry schemeRegistry = new SchemeRegistry();
    schemeRegistry.register(
            new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
    httpClient = new DefaultHttpClient(cm, params);