相关疑难解决方法(0)

AsyncTask线程永远不会死

我正在使用AsyncTasks来获取数据以响应用户按下按钮.这很好用并且在获取数据时保持接口响应,但是当我检查Eclipse调试器中发生了什么时,我发现每次AsyncTask创建一个新的(这通常是因为它们只能使用一次),正在创建一个新线程,但从未终止.

结果是大量的AsyncTask线程就坐在那里.我不确定这在实践中是否是一个问题,但我真的想摆脱那些额外的线程.

我怎么能杀死这些线程?

multithreading android android-asynctask

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

Android AsyncTask线程限制?

我正在开发一个应用程序,我需要在每次用户登录系统时更新一些信息,我也在手机中使用数据库.对于所有这些操作(更新,从数据库中检索数据等),我使用异步任务.到目前为止,我不明白为什么我不应该使用它们,但最近我经历过,如果我做一些操作,我的一些异步任务只是停止预执行而不跳转到doInBackground.这样做太奇怪了,所以我开发了另一个简单的应用程序,只是为了检查什么是错误的.奇怪的是,当总异步任务的计数达到5时,我得到相同的行为,第6个在预执行时停止.

android是否在Activity/App上有asyncTasks的限制?或者它只是一些错误,应该报告?有没有人遇到同样的问题,也许找到了解决方法?

这是代码:

只需创建其中5个线程即可在后台运行:

private class LongAsync extends AsyncTask<String, Void, String>
{
    @Override
    protected void onPreExecute()
    {
        Log.d("TestBug","onPreExecute");
        isRunning = true;
    }

    @Override
    protected String doInBackground(String... params)
    {
        Log.d("TestBug","doInBackground");
        while (isRunning)
        {

        }
        return null;
    }

    @Override
    protected void onPostExecute(String result)
    {
        Log.d("TestBug","onPostExecute");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后创建这个线程.它将进入preExecute并挂起(它不会进入doInBackground).

private class TestBug extends AsyncTask<String, Void, String>
{
    @Override
    protected void onPreExecute()
    {
        Log.d("TestBug","onPreExecute");

        waiting = new ProgressDialog(TestActivity.this);
        waiting.setMessage("Loading data");
        waiting.setIndeterminate(true);
        waiting.setCancelable(true);
        waiting.show();
    }

    @Override
    protected String doInBackground(String... params)
    {
        Log.d("TestBug","doInBackground");
        return null;
    } …
Run Code Online (Sandbox Code Playgroud)

multithreading android android-asynctask

95
推荐指数
3
解决办法
5万
查看次数

AsyncTasks是否有同时执行的限制?

这应该有一个简单的答案,但我找不到任何答案.因为我还是个假人,所以我来这里问你们.

我一直在创建这个在启动时执行10个AsyncTasks的项目.每个任务包含3个URL,这些URL在那里收集数据,并且在应用程序中尚未执行任何重要操作.

我还有10个textviews,用于跟踪AsyncTasks的进度.

当任务开始时,相应的文本视图被置于"开始"当任务正在进行时,它将其适当的文本视图设置为"正在下载"当任务完成时,它将其适当的文本视图设置为"已完成"

这就是我观察到的并且对AsyncTask提出质疑.当我启动应用程序时,我注意到有5个文本视图被切换到"正在下载"标记,所以我看到5个AsyncTasks正在按照自己的意愿完成工作.完成后,它启动一个新的AsyncTask.然而,他们从未超过5的限制.

是什么导致5个AsynchTasks同时运行的限制?我是否在一些我找不到的文件中导致这种情况?这是android 2.3.3的限制吗?也许是我用来模拟应用程序的设备的限制?

任何人都可以为我详细说明吗?

android limit android-asynctask android-2.3-gingerbread

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