相关疑难解决方法(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 vs Thread

在UI中,为了执行一些后台工作,我使用了一个单独的Thread.但正如其他人所说,我现在正在使用AsyncTask.

a Thread和an 之间的主要区别是AsyncTask什么?

在哪种情况下,我应该使用a Thread还是AsyncTask

multithreading android android-asynctask

129
推荐指数
5
解决办法
9万
查看次数

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

Android中的线程示例

我想要一些关于线程创建和在android中调用线程的简单示例.

multithreading android

73
推荐指数
3
解决办法
22万
查看次数

AsyncTask和Thread/Runnable之间的区别

我有疑问让我感到困惑.

想象一下,我想在另一个线程中做一些事情,比如获取GPS /位置内容,这些内容按照SDK文档中的建议,必须使用后台线程.

所以这里有一个问题:两者之间有什么区别

  1. Thread通过AND在后台创建AsyncTask

  2. 创建Thread thread1 = new Thread(new Runnable()......并实施run()

multithreading android runnable android-asynctask android-threading

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

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

Thread和Handler之间的区别

有人可以告诉我Thread和Handler之间的差异吗?当我们使用Thread并使用Handler时?

我的项目中有两个代码,但我无法理解它们.

final Handler handler =  new Handler()
{
    @Override
    public void handleMessage(Message msg)
    {
        //  Do SomeThings
    } 
};
Run Code Online (Sandbox Code Playgroud)

private class readThread extends Thread
{
    Handler mHandler;

    readThread(Handler h){
        mHandler = h;
        this.setPriority(Thread.MIN_PRIORITY);

    }

    @Override
    public void run()
    {
        //  Do SomeThings
    }
}
Run Code Online (Sandbox Code Playgroud)

在另一个方法中调用这样的处理程序

read_thread = new readThread(handler);
            read_thread.start();
Run Code Online (Sandbox Code Playgroud)

哪一个先跑?有人可以解释一下吗?

multithreading android handler

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

处理程序与线程

我想知道,一劳永逸.我在很多地方读过.当我想做一些"长时间操作"时,我应该使用一个Handler.

但我不明白为什么?所有我的'长时间操作'我用常规线程包围,它工作正常.

我为什么要用Handler它呢?

我必须使用的唯一一次Handler是,当我不得不安排一些任务时(postDelayed)

有什么我想念的主要想法handlers(当我真的应该使用它时)?或者也许没有真正的区别?

android handler

11
推荐指数
1
解决办法
4689
查看次数

Android异步数据加载方法

如果我需要通过HTTP(或其他)异步加载一些数据来更新UI,我在编写Android应用程序时有一些选择(在我确定我错过的许多其他应用程序中):

  1. 使用常规线程和处理程序来更新UI.

  2. 的AsyncTask

  3. 使用和IntentService,并使用回调或通过Intent广播结果.

  4. 使用装载机.

据我所知,IntentService与Activity的生命周期无关,因此对方向等的任何更改都不会影响数据的检索.这种情况不适用于在Activity中触发的AsyncTask或线程.

这个问题的原因是我刚刚读到的内容Loaders,并对其应用感到困惑.它们似乎与数据源关系更紧密,如果数据源发生变化,那么"透明地"将对所有内容进行适当处理.Loaders也似乎容忍配置/方向的变化(我相信).

我一直在使用IntentService来进行RESTful服务调用,并广播由适当的活动接收的结果.

我假设我可以写一个基于HTTP的Loader,但我不确定这是否是这种机制的最佳用法.

使用其中一种异步数据加载方法的优点/缺点是什么?

android

8
推荐指数
1
解决办法
4150
查看次数

应用程序在使用AsyncTask时挂起并挂起所有线程

我正在尝试使用AsyncTask该类来获取网站的内容.logcat W/art: Suspending all threads took: 15(or any other number)ms反复告诉我.我的应用程序被冻结,直到日志消息完成打印.日志完成后,UI会显示.我按照教程进行了双重检查,我的代码应与教程相同.过了一会儿,它会从网站上记录几行代码,但仅此而已.我也尝试过不同的网站.这是我的AsyncTask:

public class MainActivity extends AppCompatActivity {

    public class DownloadTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {

            String result = "";
            URL url;
            HttpURLConnection urlConnection = null;

            try {

                url = new URL(urls[0]);

                urlConnection = (HttpURLConnection) url.openConnection();

                InputStream in = urlConnection.getInputStream();

                InputStreamReader reader = new InputStreamReader(in);

                int data = reader.read();

                while (data != -1) {

                    char current = (char) data;

                    result += current;

                    data …
Run Code Online (Sandbox Code Playgroud)

java multithreading android

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