java - 如何实例化AsyncTask

标签 java android android-asynctask

package com.markana.yamba;

import winterwell.jtwitter.Twitter;
import winterwell.jtwitter.TwitterException;
import android.app.Activity;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class StatusActivity2 extends Activity implements OnClickListener{
    private static final String TAG= "StatusActivity";
    EditText editText;
    Button updateButton;
    TextView textCount;
    Twitter twitter;


    /** Called when the activity is first created. */
    @SuppressWarnings("deprecation")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.status);
        //Finds views
        editText =(EditText) findViewById(R.id.editText);
        updateButton=(Button) findViewById(R.id.buttonUpdate);
        updateButton.setOnClickListener(this);



        twitter=new Twitter("student","password");
        twitter.setAPIRootUrl(("http://yamba.marakana.com/api"));   

    }

    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        String status=editText.getText().toString();
        new PostToTwitter().execute(status);
        Log.d(TAG, "onClick");
    }

    class PostToTwitter extends AsyncTask<String,Integer, String>
    {
        @Override
        protected String doInBackground(String... statuses) {

            try{
            Twitter.Status status=twitter.updateStatus(statuses[0]);
            return status.text;
            }
            catch(TwitterException e)
            {
                Log.e(TAG,e.toString());
                e.printStackTrace();
                return "Failed to post";
            }
        }


        protected void onProgressUpdate(Integer...values)
        {
               super.onProgressUpdate(values);
        }

        protected void onPostExecute(String result)
        {
            Toast.makeText(StatusActivity2.this,result,Toast.LENGTH_LONG).show();           
        }
    }





}

我得到两个与异步任务相关的异常

我就是这么做的。它告诉我在运行后台工作程序时出现问题!!

04-20 09:21:32.553: ERROR/AndroidRuntime(838): FATAL EXCEPTION: AsyncTask #1
04-20 09:21:32.553: ERROR/AndroidRuntime(838): java.lang.RuntimeException: An error occured while executing doInBackground()
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.lang.Thread.run(Thread.java:1096)
04-20 09:21:32.553: ERROR/AndroidRuntime(838): Caused by: java.lang.IllegalArgumentException
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.Date.parse(Date.java:447)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.Date.<init>(Date.java:157)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at winterwell.jtwitter.Twitter$Status.<init>(Twitter.java:659)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at winterwell.jtwitter.Twitter.updateStatus(Twitter.java:3231)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at winterwell.jtwitter.Twitter.updateStatus(Twitter.java:3161)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at com.markana.yamba.StatusActivity2$PostToTwitter.doInBackground(StatusActivity2.java:60)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at com.markana.yamba.StatusActivity2$PostToTwitter.doInBackground(StatusActivity2.java:1)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-20 09:21:32.553: ERROR/AndroidRuntime(838):     ... 4 more

它应该在最后弹出一条消息.. 正如您在 onClick 方法中看到的那样!

最佳答案

Twitter.java:659

你在这里使用一些日期创建吗?看起来您正在将字符串解析为日期对象,而字符串不是指定的日期格式。

下面是你的问题部分。我猜这与任务创建无关。04-20 09:21:32.553 是什么格式

我猜它应该有点像 mm-dd-yy hh:mm:ss.nnn 或其他一些标准格式

Caused by: java.lang.IllegalArgumentException 04-20 09:21:32.553: ERROR/AndroidRuntime(838): at java.util.Date.parse(Date.java:447) 04-20 09:21:32.553: ERROR/AndroidRuntime(838): at java.util.Date.<init>(Date.java:157) 04-20 09:21:32.553: ERROR/AndroidRuntime(838): at winterwell.jtwitter.Twitter$Status.<init>(Twitter.java:659) 04-20 09:21:32.553: ERROR/AndroidRuntime(838): at winterwell.jtwitter.Twitter.updateStatus(Twitter.java:3231)

关于java - 如何实例化AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5727448/

相关文章:

java - 从 Try-Catch 中获取字符串

android - 进度条不显示

java - 如何停止执行直到所有异步任务在android中完成执行?

android - 如何将 flutter 项目迁移到 androidx

java - 如何检查上下文是否仍然可以在android中使用?

Java、Dropbox V2 : Get only names and paths of folders, 不是文件。

java - 当路径包含(空白和数字)而不仅仅是空白时,如何在 cmd 中运行应用程序

java - 在 Java 中使用 RSA 算法加密字符串的问题

android - 为我的应用程序指定最大 sqlite db 大小。如何处理数据库完全异常

Android:用完大量内存?