【问题标题】:Put method to AsyncTask将方法放入 AsyncTask
【发布时间】:2014-03-22 13:19:30
【问题描述】:

我有一个calling 方法的问题。我创建了一个button,如果我点击它,它会启动onClick()。此方法正在从up-class 调用其他方法。在这些方法中,我将layout by setContentView(R.layout...); 设置为两种不同的布局。目前,我的代码非常快速地将布局更改为第二个布局。如果第一种方法准备好,我该如何处理,第二个布局只会设置?我知道它一定是asynch-tasks,但我需要帮助来处理它。

我的代码:

public void do(int a) {
 method1();
 method2();
 }

这两种方法都来自超类。 Method1 应该将ContentView(r.layout.1) 和method2 设置为r.layout.2。

【问题讨论】:

  • 你的AsyncTask到底在哪里?

标签: android android-asynctask superclass setcontentview


【解决方案1】:

如果你想在第一种方法和第二种方法之间有一段时间,你可以在延迟一段时间后使用下面的处理程序调用第二种方法

public void do(int a) {
 method1();
new Handler().postDelayed(new Runnable() 
{

        @Override
        public void run() 
                {
            // TODO Auto-generated method stub
            try
            {
                method2();
            }
            catch(Exception e)
            {

                           Log.d("Exception",""+e.getMessage());
            }
        }
        }, 500);

 }

【讨论】:

  • 感谢您的帮助,但是否有任何选项可以更灵活地处理它而无需设置时间。它应该首先运行 method1(),然后运行 ​​method2、method3 等等。
【解决方案2】:

你可以做一个 AsyncTask:

public class BasicAsyncTask extends AsyncTask{

    @Override
    protected Object doInBackground(Object[] params) { // this will start when .execute() is called
        method1();
        return null;
    }

    @Override
    protected void onPostExecute(Object o) {   // this will be executed when doInbackGround finishes
        super.onPostExecute(o);
        method2();
    }
}

启动AsynkTask:

BasicAsyncTask basicAsyncTask = new BasicAsyncTask();
basicAsyncTask.execute();

【讨论】:

    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多