标签: android-asynctask

asynctask取消onpostexecute

我尝试并在"doInBackground"中捕获,如果应用程序在"doInBackground"中执行catch方法,我不会在代码中运行onPostExecute.代码如下:

public class DownloadFileAsync extends AsyncTask<String, Integer, Void> {
        @Override
        protected void onPreExecute(){
             super.onPreExecute();
     }

    @Override
    protected Void doInBackground(String... aurl) {
        try{
           //some code, jump to onPostexecute after complete
        }
        catch{
            //some code, don't do onPostExecute after complete
        }
        return null;

        }

    @Override
    protected void onProgressUpdate(Integer... progress) {          
    //some code
    }

    @Override
    protected void onPostExecute(Void unused) {
    //some code
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

网络是在AsyncTask和NetworkOnMainThreadException错误中

我想从远程数据库中获取一些数据,并且在我的活动的AsyncTask子类中有一些网络,但是当我尝试加载我的程序时,它显示了NetworkOnMainThreadException.

这是我的代码:

public class MyMapLocationActivity extends MapActivity {

private MapView mapView;
private static String url_product_details = "http://myurl.com/readfromdb";
private static final String TAG_SUCCESS = "success";
private static final String TAG_LATITUDE = "latitude";
private static final String TAG_LONGITUDE = "longitude";
private static final String TAG_POINT = "point";

    JSONParser jsonParser = new JSONParser();

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main); 

    mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);

    ReadLocations Read = new ReadLocations();
    Read.execute();
}

//And my networking AsyncTask:

class ReadLocations extends AsyncTask<String, String, String> { …
Run Code Online (Sandbox Code Playgroud)

android android-networking android-asynctask

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

来自被称为asynctask的静态方法的并发修改异常

我有一个静态方法,我从doInBackGround()中的Asynctask调用

在方法中有这部分代码:

    ArrayList<Message> messagesList = new ArrayList<Message>();
    if (!clearList) {
        messagesList.addAll(messages.getMessagesList());
            for (Message msg : messagesList) {
                if (msg.getId().length() == 0) {
                    messagesList.remove(msg);
                }
        }
    }
Run Code Online (Sandbox Code Playgroud)

它有时会抛出'并发修改异常',我已经尝试将该方法声明为'synchronized'但它仍然没有帮助,我不能声明块同步,因为它是一个静态方法,并且没有'this'引用.

如果我需要启动另一个,我也试图停止运行asynctask,但它也没有帮助.

帮助赞赏.

java android android-asynctask

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

无法停止/重启AsyncTask

请帮忙.我可以重启AsyncTask.每次第二次调用updatePoi()时,应用程序崩溃.

这是我的代码:

  1. 我正在检查任务的状态并设置取消(true).

    public void updatePoi() {
        //new RefreshMapTask().execute();
        if (refreshMapTask.getStatus() == AsyncTask.Status.RUNNING || 
            refreshMapTask.getStatus() == AsyncTask.Status.PENDING) {
                refreshMapTask.cancel(true);
            }
            refreshMapTask.execute();
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这是我的AsyncTask.在doInBackground我写了一个休息.

    private class RefreshMapTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            getMapView().getOverlays().clear();
            myPoiOverlay.clear();
            exitOverlay.clear();
        }
    
    
        @Override
        protected Void doInBackground(Void... voids) {
            Application app = (Application)getApplication();
            Log.d(TAG, "exits count = " + app.getExits().size());
    
            GeoPoint pointToNavigate = null;
    
            for (Exit exit : app.getExits()) {
    
                for (Poi poi : exit.getPoi()) {
                    if (isCancelled()){
                        break;
                    }
                    //some …
    Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

应用程序在AsyncTask中显示进度条时崩溃方向更改

我有一个应用程序,它使用AsyncTask从服务器获取json文件,因此显示进度条.但在显示进度条和方向更改时,应用程序崩溃显示VIEW NOT ATTACHED错误或HAS LEAKED WINDOW错误.

如何摆脱这些错误?否则,应用程序在AsyncTask上运行正常.

crash android screen-orientation android-asynctask

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

AsyncTask:我误解了什么?

activity包含一个内部private class,这基本上是它的样子,问题是:

public class MyActivity extends Activity
{
    // My xmlData that I want to fill in the asynchronous task
    XMLData xmlData;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        GetXMLTask task = new GetXMLTask(this);
        task.execute(url);

        if(xmlData == null) System.out.print("problem");
        // Prints "problem" : my xmlData is null, why?
    }

    private class GetXMLTask extends AsyncTask<String, Void, Void>
    {
        public GetXMLTask(Activity context)
        {
            // Constructor
        }

        protected Void doInBackground(String... params)
        {
            // Here some stuff to get and parse …
Run Code Online (Sandbox Code Playgroud)

java android asynchronous android-asynctask

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

java.util.concurrent.RejectedExecutionException:pool = 128/128,queue = 10/10

我在logcat中采取以下内容:

Uncaught handler: thread main exiting due to uncaught exception
05-22 20:16:08.005: W/System.err(13637): java.io.FileNotFoundException: /data/logcat_0.txt (Permission denied)
05-22 20:16:08.005: E/AndroidRuntime(13637): FATAL EXCEPTION: main
05-22 20:16:08.005: E/AndroidRuntime(13637): java.util.concurrent.RejectedExecutionException: pool=128/128, queue=10/10
05-22 20:16:08.005: E/AndroidRuntime(13637):    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1961)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:794)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1315)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at android.os.AsyncTask.execute(AsyncTask.java:394)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at com.hqiachcfpy.AdController.loadIcon(Unknown Source)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at com.hqiachcfpy.s.onAdOptin(Unknown Source)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at com.hqiachcfpy.AdOptinRequest.onPostExecute(Unknown Source)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at android.os.AsyncTask.finish(AsyncTask.java:417)
05-22 20:16:08.005: E/AndroidRuntime(13637):    at android.os.AsyncTask.access$300(AsyncTask.java:127)
05-22 20:16:08.005: E/AndroidRuntime(13637): …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks android-asynctask

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

AsyncTask不与第二个AsyncTask同时运行

我有一个AsyncTask

private class LoadData extends AsyncTask<String, Void, String> {
    private String WEBURL;
    LoadData(String url){
        this.WEBURL=url;
    }
    protected String doInBackground(String... params) {
        System.out.println("Downloading");
        URL url = new URL(WEBURL);
        URLConnection conn = url.openConnection();
        conn.connect();
        byte buffer[] = new byte[1024];
        InputStream in = new BufferedInputStream(url.openStream());
        String contents="";
        while((count = in.read(buffer))!=-1){
        total+=count;
        contents += new String(buffer, 0, count);
        }
        System.out.println("Downloaded");
        in.close;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我试着LoadData打电话给两个人

new LoadData("http://www.google.com").execute();
new LoadData("http://www.stackoverflow.com").execute();
Run Code Online (Sandbox Code Playgroud)

我希望输出:

正在下载下载正在下载

但相反,我得到了

正在下载已下载的下载

这意味着AsyncTasks不是同时执行的.为什么是这样?我认为线程的重点是这不会发生?+有没有办法让他们同时运行而不需要更改太多的代码?

multithreading android android-asynctask

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

强制停止httpClient httpget?

目标根本不能阻止 httpClienthttpget

当我点击进度对话框cancel按钮RequestAsyncTask应停止和终止,但它不是,请求仍在运行,直到其完成

这是我的AsyncTask测试代码

public class getAlbuminfo extends AsyncTask<String,String, String> {

    ProgressDialog progressDialog; 
    JSONObject data       = null;   
    boolean prependMore   = false;

    //Http 
    HttpClient httpClient;
    HttpGet    httpget;

    /**********
     * Begien
     */
    @SuppressWarnings("deprecation")
    @Override
    protected void onPreExecute() {

        if ( onlypagenat == false )
        {
          progressDialog = new ProgressDialog(context);
          progressDialog.setCancelable(false);
          progressDialog.setIndeterminate(true);
          progressDialog.setMessage(context.getResources().getString(R.string.opening_album));
          progressDialog.setButton(context.getResources().getString(R.string.cancel), new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
              cancel(true);  
              finish();
            }});
          progressDialog.show();                    
        }     

       prependMore = appendMore;
       appendMore …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

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

[ANDROID]在HandlerThread中实现消息延迟

我想在我的应用程序中每隔几秒做一些事情,为此目的,我已经实现HandlerThreadhandler通过以下代码

handlerThread = new HandlerThread(getClass().getSimpleName());
        handlerThread.start();

    handler = new Handler(handlerThread.getLooper(), new Callback() {

        @Override
        public boolean handleMessage(Message msg) {

            //my code here  
            return l.this.handleMessage(msg);
        }
    });
Run Code Online (Sandbox Code Playgroud)

我通过发送消息来启动此处理程序 onCreate()

我按如下方式处理消息:

private boolean handleMessage(Message msg) {
    switch (msg.what) {
        default:
            return false;
        case MY_MESSAGE:
            if(handler_stop==0)
            {
                checkLauncher();
                sendMessage(MY_MESSAGE); // I Send the message from here to make //this continuous       
            }



    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它发送的信息太快,我的意思是不断,而我希望这个消息在2或3秒后发送,简而言之,我想每2-3秒重复一次任务.

我如何在上面的代码上执行此操作?请一些帮助

android android-asynctask

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