标签: android-asynctask

如何在Google App Engine上执行异步操作?

在Google App Engine(Java)上运行异步线程的所有方法是什么?我能想到一个 - 但我想知道所有这些/

java google-app-engine android android-asynctask

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

AsyncTask无法在线程android中工作

我使用AsyncTask来更改TextView的文本,如下所示:

    private class LongOperation extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
        String response = "";
        for (String url : urls) {
            response += url;
        }
        return response;
    }

    @Override
    protected void onPostExecute(String result) {
        textView.setText(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在OnClick事件中调用它,一切都会好的:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    textView = (TextView) findViewById(R.id.txt);
    Button button = (Button)this.findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
          new LongOperation().execute(new String[]{"Hello"});
        }
      });
   }
Run Code Online (Sandbox Code Playgroud)

但是当我在我的线程中调用它时,该程序被迫关闭

this.closeButton.setOnClickListener(new OnClickListener() {
         @Override
        public void onClick(View v) …
Run Code Online (Sandbox Code Playgroud)

android thread-safety android-asynctask

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

无法在未使用AsyncTask调用Looper.prepare()的线程内创建处理程序

我试图在Android上使用AsyncTask类但我有一个问题.

这是我的代码:

 public void CheckIfUserIsLogedIn ()
{
    int userPresence = localDatabase.CheckUserPresence();
    if (userPresence == 0) 
    {
        setContentView(R.layout.main);
        new checkCountryAsync().execute();
    }
    else
    {
        setContentView(R.layout.userlogedon);
    }
}  

class checkCountryAsync extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute(); 
    }
    @Override
    protected String doInBackground(String... aurl) {
        int countryPresence = localDatabase.CheckCountryPresence();
        if (countryPresence == 0) 
        {
            CountryTable country = new CountryTable() ;
            country.EnterCountry();
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.LocalDatabase类中的方法CheckCountryPresence()仅进行查询并返回结果.

谢谢.

编辑:这是logCat:

02-20 08:41:25.804: W/dalvikvm(26458): threadid=10: thread exiting with uncaught exception (group=0x4001d5a0)
02-20 …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

单独创建一个AsyncTask类

更新2

logcat的:

03-02 19:03:47.616: E/AndroidRuntime(881): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{TheTask}: java.lang.InstantiationException:  .TheTask
03-02 19:03:47.616: E/AndroidRuntime(881):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
03-02 19:03:47.616: E/AndroidRuntime(881):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-02 19:03:47.616: E/AndroidRuntime(881):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-02 19:03:47.616: E/AndroidRuntime(881):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-02 19:03:47.616: E/AndroidRuntime(881):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-02 19:03:47.616: E/AndroidRuntime(881):  at android.os.Looper.loop(Looper.java:123)
03-02 19:03:47.616: E/AndroidRuntime(881):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-02 19:03:47.616: E/AndroidRuntime(881):  at java.lang.reflect.Method.invokeNative(Native Method)
03-02 19:03:47.616: E/AndroidRuntime(881):  at java.lang.reflect.Method.invoke(Method.java:507)
03-02 19:03:47.616: E/AndroidRuntime(881):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-02 19:03:47.616: E/AndroidRuntime(881):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-02 19:03:47.616: E/AndroidRuntime(881):  at dalvik.system.NativeStart.main(Native Method)
03-02 19:03:47.616: E/AndroidRuntime(881): Caused by: …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

使用AsyncTask从错误的线程异常调用

即使我把它扔进AsyncTask的DoInBackground方法,我仍然会得到一个CalledFromWrongThreadException!任何人都可以告诉我为什么以及如何解决它?

/**
     * Recognizes key words in responseTexts and runs the appropriate function
     * @param responseText
     */
    private void responseHandler(String responseText) {
        if(responseText.startsWith("Notes", 0)) {
            notes.add(responseText);
            new DownloadFilesTask().execute("WriteInternal" , null, null);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的AsyncTask类

private class DownloadFilesTask extends AsyncTask<String, Void, String> {
    protected String doInBackground(String... command) {
    if(command[0].equals("WriteInternal") {
        //write to internal storage
    FileOutputStream fOut = null;
    OutputStreamWriter osw = null;
    try{
        fOut = openFileOutput("notes.txt", Context.MODE_PRIVATE);
        osw = new OutputStreamWriter(fOut);
        for (int i = 0; i < notes.size(); i++){
            osw.write(notes.get(i) …
Run Code Online (Sandbox Code Playgroud)

android asyncsocket thread-exceptions android-asynctask

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

多个异步任务未在android 4.1中运行

在我的Android应用程序中,我使用3个不同的异步任务.在活动A中运行2个任务,在活动B中运行第3个任务.当我在操作系统版本2.3的模拟器中运行应用程序时,工作正常.但是,当我在Android 4.0或更高版本中尝试时,只有第一个Asynctask正在运行.

有没有办法在4.0及更高版本中运行所有3个异步任务?

android android-asynctask

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

ProgressDialog与AsyncTask - 不会显示

我知道这个问题已被多次询问,但我有一个显然干净的代码,但是没有用,给我没有例外或任何东西.

我有一个简单的一键Activity(MainActivity).其中的按钮调用AsyncTask以便在后台发送电子邮件.我试着去做我认为这是很常见的事情:显示ProgressDialog任务开始的时间并在结束时解除它.为此,我将上述代码放入AsyncTask.onPreExecute()AsyncTask.onPostExecute().我认为问题出现在Context提供给对话框构造函数中,但我为我创建了一个简单的构造函数,我AsyncTask将其传递给应用程序上下文.我添加了一个简单Toast的调试,但它没有显示...

这是按钮onClick方法的代码:

public void onClick(View v) {
    new Sender(this).execute("args");
}
Run Code Online (Sandbox Code Playgroud)

这是任务的代码:

private class Sender extends AsyncTask<String, Void, Void> {
    private ProgressDialog progDialog;
    private Context context;

    public Sender(Context context) {
        this.context = context;
    }

    @SuppressWarnings("unused")
        protected void onPreExecute(Void... params) {
        Toast.makeText(this.context, "Sending...", Toast.LENGTH_SHORT).show();
        progDialog = ProgressDialog.show(this.context, "Sending", "Picture is being sent...", true);
    }

    protected Void doInBackground(String... mailSubj) {
        // some code that …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

android - 从自定义适配器类调用AsyncTask更新ListView

我正在尝试从AsyncTask更新ListView.我有这种情况:

  • Activity类从自定义Adapter类创建列表适配器.
  • Adapter类在列表项的元素上设置onClickListener,并调用位于不同Utilities类中的AsyncTask.

如何从Utilities AsyncTask中的onPostExecute()方法调用notifyDataSetChanged?

android adapter android-asynctask

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

Android多线程和服务

我对Android中的多线程有点困惑.我知道我们可以实现使用AsyncTaskHandler.通常什么时候我们应该通过在Android中扩展Thread Class来实现?任何人都可以举一个例子,我们只需要通过扩展线程类而不是使用AsyncTask或来做它Handler.

  1. 考虑一个示例应用程序,我们在活动中有一个弹跳球(忘记动画部分),我需要每20分钟更改一次球的颜色,我需要从服务器获取颜色代码并更新球UI.现在我该怎么做到这一点?有人可以解释使用AsyncTaskHandler仅使用线程类(没有AsynctaskHandler)?

  2. 我该如何处理使用服务从服务器下载大型有效负载.

java service multithreading android android-asynctask

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

Android异步任务一个接一个

我有一个现有的代码,其中有一个Async Task用于某些请求 - 响应.在post execute方法中,它将解析后的数据设置为某个db.

现在,我需要修改此代码,以便在应用启动时逐个下载数据.即我需要执行任务A,然后完全完成(甚至数据设置)我需要启动任务B等等大约12个任务.

注意:在开始下一个任务之前,我还需要完成"后执行".

我不知道该怎么做.请建议.

parsing android soap download android-asynctask

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