标签: android-asynctask

Listview致命异常:从doInBackground内部调用时,AsyncTask#1

我通过客户端/服务器进行简单的聊天,当我将消息发送到服务器时,它完美地显示了ListView泡泡.但是当我从服务器发送一个并且客户端收到它时,它会尝试执行addItems()并关闭它.我尝试了一切.我知道这是因为我无法从Asynctask更改UI,但我是Android/Java的新手,我不知道DOOOOOOOO是什么!帮助PAYASEEEE !!!!!

***MY LOG CAT** 01-08 18:32:41.023: E/AndroidRuntime(1242): FATAL EXCEPTION: AsyncTask #1
01-08 18:32:41.023: E/AndroidRuntime(1242): java.lang.RuntimeException: An error occured while executing doInBackground()
01-08 18:32:41.023: E/AndroidRuntime(1242):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-08 18:32:41.023: E/AndroidRuntime(1242):     at java.lang.Thread.run(Thread.java:856)
01-08 18:32:41.023: E/AndroidRuntime(1242): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a …
Run Code Online (Sandbox Code Playgroud)

java android android-widget android-listview android-asynctask

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

如何设置进度条直到从服务器使用json获取数据?

可能重复:
Android AsyncTask进度条

我正在使用登录过程,在服务器上获取数据的时间是延迟.所以我想设置一个进度条为tat delay.how设置进度条直到得到服务器的响应.有人知道答案请帮助我.

android android-asynctask

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

从asynctask传递上下文?

好的,所以我有一个运行asynctask的任务服务类,然后在条件满足时启动通知.在发送方法中有一个空指针异常,其中创建了Intent,上下文具有所有空值.我不认为我正确地从BloodLevelParse asynctask传递上下文?不确定我还能尝试什么.这是班级:

public class TaskService extends IntentService {

    private ArrayList<BloodLevels> BloodLevelList;

    private String bloodLevel;
    private String bloodType;
    private Integer bloodLevelDays;

    private MyProfileActivity myProfileActivity;

    private BloodLevelParse bloodLevelParse;

    public TaskService() {
        super("TaskService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {

        // Pass through the blood type
        Bundle bundle = intent.getExtras();
        bloodType = bundle.getString("currentBloodType2");

        // Only perform check if there is an internet connection
        if (CheckNetwork.isInternetAvailable(TaskService.this)) {

            // Check the current blood level for the given blood type
            new BloodLevelParse(this).execute(bloodType);

        } else {
            Toast.makeText( …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

AsyncTask没有onProgressUpdate Android

看起来这个类没有用,因为它从不发布进度. onPostExecute实际上有效.但是这个课程主要依赖于progressUpdate.

class DoBackgroundStuff extends AsyncTask<String, Integer, String> {

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

        String rawContactsDl;
        while(true) {

            if (isFinished == true) {
                backgroundStopped = true;
                break;
            }

            //DO SOME STUFF
            publishProgress(1);

            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return "done";
    }

    protected void onProgressUpdate(int progress) {
        Log.i("VERBOSE","onProgress " + progress);
        adapter.notifyDataSetChanged();
    }

    protected void onPostExecute(String result) {
        Log.i("VERBOSE","onPosts " + result);
        adapter.notifyDataSetChanged();
    }

}
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

-1
推荐指数
2
解决办法
157
查看次数

为什么Progress Bar不会退出?

我使用了asyncTask来发出http请求,因此我使用了进度条来指示该线程中的ongoings的进度.一切正常,直到onPostexecute()方法被调用,我已经显示了响应字符串,Logcat但我的进度条没有退出.

有类似的问题,但我没有得到问题所需的解决方案.请帮忙.

这是我的代码:

class RequestTask extends AsyncTask<String, Integer, String> {
        @SuppressWarnings("static-access")
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            prgDialog=new ProgressDialog(getActivity()); 
            prgDialog.setCancelable(true);
            prgDialog.show(getActivity(), null, "Loading...");
        }

        @Override
        protected String doInBackground(String... uri) {
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response;
            String responseString = null;
            try {
                response = httpclient.execute(new HttpGet(uri[0]));
                StatusLine statusLine = response.getStatusLine();
                if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    response.getEntity().writeTo(out);
                    out.close();
                    responseString = out.toString();
                } else {
                    // Closes …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask progress-bar

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

异步任务上 TextView 的 setText 完成

我想在我的 android 应用程序中使用 ksoap2 Web 服务返回一个特定的字符串。

Web 服务正在返回正确的值,但一旦任务完成,设置的文本就不会更新。我需要做一些事情(比如尝试打开导航抽屉)然后它会得到更新。有任何想法吗??

我的代码如下

// Calling the async class

protected void onResume() {
            try {
                super.onResume();
                new RetrieveTimeWS().execute();
            }
            catch (Exception e)
            {
                Log.e("Current Time", e.getMessage());
            }
        }
Run Code Online (Sandbox Code Playgroud)

以下是异步任务

class RetrieveTimeWS extends AsyncTask<Void, Void, String> {

        protected String doInBackground(Void... params) {
            String datetime = "";
            try {

                TextView TVcurrentTime = (TextView) findViewById(R.id.DateTimeNow);

                TVcurrentTime.setText("Loading...");
                datetime = getDateTimeClass.getDateTime();
                TVcurrentTime.setText(datetime);

            } catch (Exception e) {
                Log.e("Async Task - GetDateTime ", e.getMessage());
            }
            return datetime;
        }
    }
Run Code Online (Sandbox Code Playgroud)

文本字段显示“正在加载...”,直到我触摸屏幕上的任何组件。在 Web …

android textview android-asynctask

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

为什么AsyncTask会使用弃用的行?在我的代码?

我正在做一个AsyncTask,如果我将sdk降低到22,我可以添加.

在sdk 23上它根本不起作用,即使在22年,它也为我写了一些内容.

我究竟做错了什么 ?或者如何纠正它以便我可以在sdk 23运行它?

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

        try {

            //------------------>>
            HttpGet httppost = new HttpGet(urls[0]);
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response = httpclient.execute(httppost);

            // StatusLine stat = response.getStatusLine();
            int status = response.getStatusLine().getStatusCode();

            if (status == 200) {
                HttpEntity entity = response.getEntity();
                String data = EntityUtils.toString(entity);

                JSONObject jsono = new JSONObject(data);

                //this gets us the actors node and puts it in jarray veriable
                JSONArray jarray = jsono.getJSONArray("actors");

                for (int i = 0; i < jarray.length(); …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

getWindow()无法在AsyncTask内部解析

我想实现的东西里面AsyncTask这样

@Override
protected void onPreExecute() {
    super.onPreExecute();
    ...
    // prevent screen sleep
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}


@Override
protected void onPostExecute(List<Result> results) {
    super.onPostExecute(results);
    getWindow().clearFlag (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是我Cannot resolve method getWindow()在Android Studio中收到错误“ ”。我想念什么?

更新资料

我的AsyncTask的构造函数是:

public MyTask(ProgressDialog pDlg) {
    progressDlgReference = new WeakReference<>(pDlg);
    progressDlg = progressDlgReference.get();
    context = progressDlg.getContext();
    ...
}
Run Code Online (Sandbox Code Playgroud)

我尝试强制转换context为,Activity但出现运行时错误((Activity) context).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

android android-asynctask android-studio

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

java.lang.String 无法从 Okhttp 转换为 JSONArray

我正在尝试从服务器获取 json 并将其放入我的 RecyclerView,但它说“java.lang.String 无法转换为 JSONArray”。我试图跟踪我的 json,但它什么也没显示。怎么了,我该如何解决这个问题?

     private void Prosesdataserver(int id){
     AsyncTask<Integer, Void, Void> task = new AsyncTask<Integer, Void, Void>() {
        @Override
        protected Void doInBackground(Integer... integers) {
        OkHttpClient client = new OkHttpClient();
        try{
           RequestBody formBody = new FormBody.Builder().add("username_krm", username).add("password_krm", password).build();
           Request request = new Request.Builder().url("http://" + urlpakai + "/utrapos/index.php/getpenawaran?id="+integers[0]).post(formBody).build();
           response = client.newCall(request).execute();
           ini = response.body().toString();
           JSONArray array = new JSONArray(ini);
           System.out.println("Saya Berkata: " + ini);
              for(int i=0; i<array.length();i++){
                 JSONObject object = array.getJSONObject(i);
                 DataJson hasil = new DataJson(object.getInt("id"), object.getString("kode"), object.getString("tglpenawaran"), object.getString("nama"), …
Run Code Online (Sandbox Code Playgroud)

android json android-asynctask okhttp

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

ANDROID:如何等待点击警报对话框?

我准备了带有警报对话框的 AsyncTask,其中是 / 否按钮。我需要为 Yes 返回 1,为 No 返回 0。我不完全理解 AsyncTask。添加点击等待时间需要做什么?当前状态不等待

代码类:

class MyTask extends AsyncTask<Void,Integer,Integer> {
TextView ozn_=null;
AlertDialog dialog=null;
AlertDialog.Builder builder=null;
ImageView icon=null;
int ret=0;

public int getRetValue(){
    return ret;
}

public MyTask(int a){
    ret=a;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    ozn_ = new TextView(LoginActivity.this);
    AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
    ImageView icon = new ImageView(LoginActivity.this);
    icon.setBackgroundResource(R.drawable.warn);
    builder.setMessage("oznam");
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(set_dp(60), set_dp(60));
    icon.setLayoutParams(params);
    ozn_.setGravity(Gravity.LEFT);
    LinearLayout l1 = new LinearLayout(LoginActivity.this);
    l1.setPadding(set_dp(12), set_dp(12), set_dp(12), set_dp(20));
    l1.setOrientation(LinearLayout.HORIZONTAL);
    l1.setGravity(Gravity.CENTER_VERTICAL);
    ozn_.setPadding(set_dp(12), …
Run Code Online (Sandbox Code Playgroud)

android dialog return android-asynctask android-alertdialog

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

android.os.NetworkOnMainThreadException

我正在做门户网站应用程序.

通过使用AsyncTask <>我获取json值并显示.

我的应用程序在Android 2.3.3中运行良好,但是当我在Android 4.1.2中运行该应用程序时,它会抛出错误.我已经使用google并根据它进行了更改,但我仍然在4.1.2中收到错误

我在清单中也包括了这行...

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

我也删除了runOnUiThread部分,onPostExecute(String file_url)之后它也抛出了错误.

任何帮助,将不胜感激.

我的代码

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

         @Override
            protected void onPreExecute() {
                super.onPreExecute();

                showDialog(progress_bar_type);
            }

        protected String doInBackground(String... args) {
                 // here my codes

    }
                protected void onPostExecute(String file_url) {
            pDialog.dismiss();
            gnamelist=new ArrayList<String>(new LinkedHashSet<String>(gnamelist));
            runOnUiThread(new Runnable() {
                public void run() {
                    createExpandableListViewDialog();
                    }
            });
            return;
        }
        }
Run Code Online (Sandbox Code Playgroud)

logcat的

07-29 00:29:47.860: E/AndroidRuntime(947): FATAL EXCEPTION: main
07-29 00:29:47.860: E/AndroidRuntime(947): android.os.NetworkOnMainThreadException
07-29 00:29:47.860: E/AndroidRuntime(947):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
07-29 …
Run Code Online (Sandbox Code Playgroud)

android exception android-asynctask networkonmainthread

-2
推荐指数
1
解决办法
7491
查看次数

同时运行多个Asyntasks

我有一个问题,我根本无法理解它!我有一个Asynctask连接到Web服务并下载一些数据.

但当我这样做时,我的其他人Asynctasks等待这个Asynctask to finish his work evenAsynctasks in otherActivities` !! 但我无法理解这一点.

我怎么能避免这个?我当时认为Asynctasks可以同时运行,但现在却没有!问题是什么?似乎REST和下载流数据会阻止整个应用程序.

java android android-asynctask

-3
推荐指数
1
解决办法
227
查看次数

如何在Android中等待执行方法

我有一个问题,我编写的代码就像

private class SomeClass extends AsyncTask {
    @Override
    protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(CheckOutActivity.this);
            pDialog.setMessage(getText(R.string.wait));
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
    @Override
    protected Void doInBackground(Void... arg0) {
//some code
}
@Override
        protected void onPostExecute(final Void unused) {
            if (pDialog.isShowing()) {
                pDialog.dismiss();
            }
        }
}
Run Code Online (Sandbox Code Playgroud) 我执行这样的类
new SomeClass().execute();
Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT).show();
现在我的问题是.execute()启动代码就像不等待它意味着Toast就像在执行SomeClass()之前执行一样.execute(); 有没有等待这个.execute()方法的属性.

编辑:我为全局变量赋值,在执行后我只想比较这个值.所以我只是把Toast的消息.

android android-asynctask

-4
推荐指数
1
解决办法
1285
查看次数