相关疑难解决方法(0)

同时运行多个AsyncTasks - 不可能?

我正在尝试同时运行两个AsyncTasks.(平台是Android 1.5,HTC Hero.)但是,只有第一个被执行.这是一个描述我的问题的简单片段:

public class AndroidJunk extends Activity {
 class PrinterTask extends AsyncTask<String, Void, Void> {
     protected Void doInBackground(String ... x) {
      while (true) {
       System.out.println(x[0]);
       try {
        Thread.sleep(1000);
       } catch (InterruptedException ie) {
        ie.printStackTrace();
       }
      }
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        new PrinterTask().execute("bar bar bar");
        new PrinterTask().execute("foo foo foo");

        System.out.println("onCreate() is done.");
    }
}
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

onCreate() is done.
bar bar bar
foo foo foo
bar bar bar
foo foo foo
Run Code Online (Sandbox Code Playgroud)

等等.但是,我得到的是:

onCreate() is done. …
Run Code Online (Sandbox Code Playgroud)

multithreading android android-asynctask

249
推荐指数
4
解决办法
17万
查看次数

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万
查看次数