标签: android-asynctask

在AsyncTask中获取上下文

我试图在我的AsyncTask中获取名为Opciones的类的上下文(这个类是唯一一个调用该任务的类),但我不知道该怎么做,我看到了一些像这样的代码:

      protected void onPostExecute(Long result) {

    Toast.makeText(Opciones.this,"Subiendo la foto. ¡Tras ser moderada empezara a ser votada!: ", Toast.LENGTH_LONG).show(); 
}
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用它说: "No enclosing instance of the type Opciones in scope"

android toast android-context android-asynctask

78
推荐指数
3
解决办法
7万
查看次数

如何将多个原始参数传递给AsyncTask?

有相关的问题,例如如何将2个参数传递给AsyncTask类?但是我遇到了徒劳地尝试将多个原语作为参数传递给AsyncTask的困难,所以我想分享我发现的东西.在现有的问题和答案中没有捕捉到这种微妙之处,所以我想帮助那些遇到与我一样的问题的人,并为他们省去痛苦.

问题是:我有多个原始参数(例如两个long),我想传递给AsyncTask以在后台执行 - 它怎么能完成?(我的回答......经过一段时间的挣扎......可以在下面找到.)

primitive android variadic-functions android-asynctask

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

即使活动已经销毁,AsyncTask也不会停止

我有一个AsyncTask对象,它在创建活动时开始执行,并在后台执行操作(下载最多100个图像).一切都很好,但有一种我不能理解的特殊行为.

例如:当Android屏幕的方向发生变化时,活动将被销毁并再次创建.所以我重写onRetainNonConfigurationInstance()方法并保存在AsyncTask中执行的所有下载数据.我这样做的目的是每次在方向更改期间销毁活动时都不会运行AsyncTask,但正如我在日志中可以看到的,之前的AsyncTask仍然在执行.(虽然数据保存正确)

我甚至尝试在活动的onDestroy()方法中取消AsyncTask,但日志仍然显示AsyncTask正在运行.

这是非常奇怪的行为,如果有人能告诉我停止/取消AsyncTask的正确程序,真的很感激.

谢谢

android android-asynctask

72
推荐指数
2
解决办法
7万
查看次数

iOS/Objective-C相当于Android的AsyncTask

我熟悉AsyncTaskAndroid中的使用:创建子类,调用子类execute的实例,并onPostExecute在UI线程或主线程上调用.什么是iOS中的等价物?

android asynchronous ios android-asynctask

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

AsyncTask中的progressDialog

我正在尝试从http服务器加载rss feed时显示自定义progressdialog,我进行了一次硬搜索,但没有任何帮助我这样做,我唯一知道的是解决方案应该使用AsyncTask,但我很困惑params传递给这个AsyncTask.这是我的活动:

public class Soirees extends ListActivity {

    private List<Message> messages;
    private TextView tvSorties;
    private MyProgressDialog dialog;

    @Override
    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);
        setContentView(R.layout.sorties);

        tvSorties=(TextView)findViewById(R.id.TVTitle);
        tvSorties.setText("Programme des soirées");

        loadFeed();

    }

    private void loadFeed(){

        try{
            BaseFeedParser parser = new BaseFeedParser();
            messages = parser.parse();
            List<Message> titles = new ArrayList<Message>(messages.size());
            for (Message msg : messages){
                titles.add(msg);
            }
            MessageListAdapter adapter = new MessageListAdapter(this,titles);
            this.setListAdapter(adapter);
            adapter.notifyDataSetChanged();

        } catch (Throwable t){
            Log.e("ImageLoader",t.getMessage(),t);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

你能帮我添加AsyncTask吗?

谢谢你,Houssem

android progressdialog android-asynctask

64
推荐指数
3
解决办法
13万
查看次数

Android在Android中检查null或空字符串

在我尝试时,AsyncTask我从我的服务器获取电子邮件地址.在onPostExecute()我必须检查是电子邮件地址emptynull.我使用以下代码来检查它:

if (userEmail != null && !userEmail.isEmpty()) {
    Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
    UserEmailLabel.setText(userEmail);
}
Run Code Online (Sandbox Code Playgroud)

但在我Toast看来null是印刷的.我的完整代码:

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

    protected Void doInBackground(String... res) {
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("user_id", PrefUserName));
        params.add(new BasicNameValuePair("type", type_data));
        JSONObject json = jsonParser.makeHttpRequest(Url, "POST", params);
        String result = "";
        try {
            result = json.getString("message");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        if …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask android-fragmentactivity

64
推荐指数
4
解决办法
13万
查看次数

Android - 强力取消AsyncTask

我在我的一个活动中实现了AsyncTask:

 performBackgroundTask asyncTask = new performBackgroundTask();
 asyncTask.execute();
Run Code Online (Sandbox Code Playgroud)

现在,我需要实现"取消"按钮功能,所以我必须停止执行正在运行的任务.我不知道如何停止运行任务(后台任务).

所以请建议我,如何有力地取消AsyncTask?

更新:

我找到Cancel()了相同的方法,但我发现调用cancel(boolean mayInterruptIfRunning)不一定会停止执行后台进程.似乎发生的一切是AsyncTask将执行onCancelled(),并且在完成时不会运行onPostExecute().

android android-asynctask

62
推荐指数
4
解决办法
9万
查看次数

AsyncTask:doInBackground()的返回值在哪里?

调用时AsyncTask<Integer,Integer,Boolean>,其返回值为:

protected Boolean doInBackground(Integer... params)

通常我们启动AsyncTask new AsyncTaskClassName().execute(param1,param2......);但它似乎没有返回值.

哪里可以doInBackground()找到返回值?

android return-value android-asynctask

61
推荐指数
2
解决办法
9万
查看次数

java.net.UnknownHostException:无法解析主机"<url>":没有与主机名关联的地址和字符0处的输入结束

我创建了一个从我的Web服务加载问题的应用程序,它运行正常.但是,有时它崩溃,我不明白为什么会发生这种情况,特别是因为我还给了它所需的权限.它工作正常,但随机,它崩溃,并给我这个报告.

private void sendContinentQuestions(int id) {
    // TODO Auto-generated method stub

    //Get the data (see above)
    JSONArray json = getJSONfromURL(id);
        try{
            for(int i=0; i < json.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject jObject = json.getJSONObject(i);
                longitude":"72.5660200"
                String category_id = jObject.getString("category_id");
                String question_id = jObject.getString("question_id");
                String question_name = jObject.getString("question_name");
                String latitude = jObject.getString("latitude");
                String longitude = jObject.getString("longitude");
                String answer = jObject.getString("answer");
                String ansLatLng = latitude+"|"+longitude ; 
                Log.v("## data:: ###",question_id+"--"+question_name+"-cat id-"+category_id+"--ansLatLng "+ansLatLng+" answer: "+answer);

                all_question.add(new QuestionData(game_id,category_id,question_id,question_name,ansLatLng,answer));
            }
        }catch(JSONException …
Run Code Online (Sandbox Code Playgroud)

java android web-services android-asynctask

61
推荐指数
6
解决办法
12万
查看次数

Android UI线程消息队列调度顺序

使用Android中的retain Fragments在配置更改期间保存AsyncTask时,我认为这是最好的方法,我脑海中出现了一些关于UI Thread的Message Queue调用顺序的疑问.

例如:想象一下这种情况:

  1. 发生配置更改,用户旋转设备.AsyncTask正在运行.
  2. 片段onDetach()被称为
  3. AsyncTask doInBackground()方法完成
  4. onPostExecute()调用AsyncTask
  5. 片段onAttach()被称为

UI线程消息队列也可以这样:

队列顶部 - > onDetach()| onPostExecute()| onAttach()

我知道它不能,调用onPostExecute()将等到配置更改完成,据我所知,但这是如何工作的?来自活动,碎片生命周期的调用是否连续执行?

android android-asynctask

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