- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
谁能告诉我如何使用 ASyncTask 更新 UI 并举个例子?
我从两个网络服务中获取值(value)。从两个 web 服务中,我在两个 arraylist 的 post 方法中获取值将不会返回值,它将在循环中四舍五入。如何从 onPostExecuteMethod 返回?
这是我的异步类:
public class HomeTask extends AsyncTask<Void,Void,Bundle>
{
private Context ctx;
public HomeTask(Context context) {
ctx = context;
}
@Override
protected void onPreExecute() {
//super.onPreExecute();
//setContentView(R.layout.splash);
dlg = new ProgressDialog(getDialogContext());
dlg.setMessage("Loading....");
dlg.show();
//setContentView(R.layout.splash);
}
@Override
protected Bundle doInBackground(Void... params) {
Bundle b=new Bundle();
// TODO Auto-generated method stub
try
{
WebService tableservice=new WebService();
tableservicevalue=tableservice.callTableServer(SOAP_ACTION,"",strUsername,strPassWord,questGroupId,URL);
tableservicevalue=decodeXMLData(tableservicevalue);
DomTableParser parser=new DomTableParser();
parser.setTableservicevalue(tableservicevalue);
parsedValue=parser.parseXmlFile(tableservicevalue);
Log.d("1234%%%%$$$$$$$parsed value$$$$$", parsedValue.toString());
WebService service=new WebService();
webservicevalue=service.callHomeServer(SOAP_ACTION,"",strUsername,strPassWord,questGroupId,URL);
webservicevalue=decodeXMLData(webservicevalue);
ArticleParser articleParser=new ArticleParser();
articleParsedValue=articleParser.parseXmlArticle(webservicevalue);
//b.putStringArrayList("articleParsedValue", articleParsedValue);
Log.d("(((((((parsed value is",parsedValue.toString());
b.putStringArrayList("parsedValue", parsedValue);
b.putStringArrayList("articleParsedValue", articleParsedValue);
Log.d("(((((((parsed value is",articleParsedValue.toString());
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return b;
}
@Override
protected void onPostExecute(Bundle b) {
Log.d("vijay checking","checking&&&&");
Log.d("****","*********");
Log.d("calling","handler");
Log.d("****","*********");
parsedValue1=b.getStringArrayList("parsedValue");
articleParsedValue1=b.getStringArrayList("articleParsedValue");
}
更新用户界面
new HomeTask(HomeActivity2.this).execute(null);
for(int i=0;i<parsedValue1.size();i++)
{
DomParserTableDataSet dataSet=(DomParserTableDataSet)parsedValue1.get(i);
if(i==0)
{
Log.d("&&&&&&index name is", dataSet.getIndexName());
Log.d("&&&&&&index name is", dataSet.getLastValue());
Log.d("&&&&&&index name is",dataSet.getChangePercentage() );
txtindex0.setText(dataSet.getIndexName());
txtlast0.setText(dataSet.getLastValue());
txtchange0.setText(dataSet.getChangePercentage());
}
if(i==1)
{
Log.d("&&&&&&index name is", dataSet.getIndexName());
Log.d("&&&&&&index name is", dataSet.getLastValue());
Log.d("&&&&&&index name is",dataSet.getChangePercentage() );
txtindex1.setText(dataSet.getIndexName());
txtlast1.setText(dataSet.getLastValue());
txtchange1.setText(dataSet.getChangePercentage());
}
if(i==2)
{
Log.d("&&&&&&index name is", dataSet.getIndexName());
Log.d("&&&&&&index name is", dataSet.getLastValue());
Log.d("&&&&&&index name is",dataSet.getChangePercentage() );
txtindex2.setText(dataSet.getIndexName());
txtlast2.setText(dataSet.getLastValue());
txtchange2.setText(dataSet.getChangePercentage());
}
if(i==3)
{
Log.d("&&&&&&index name is", dataSet.getIndexName());
Log.d("&&&&&&index name is", dataSet.getLastValue());
Log.d("&&&&&&index name is",dataSet.getChangePercentage() );
txtindex3.setText(dataSet.getIndexName());
txtlast3.setText(dataSet.getLastValue());
txtchange3.setText(dataSet.getChangePercentage());
}
}
//
for(int i=0;i<articleParsedValue1.size();i++)
{
System.out.println("for loop checking i is"+i);
ArticleDataSet articleDataset=(ArticleDataSet)articleParsedValue1.get(i);
System.out.println("articleDataset.getArticle_title()"+articleDataset.getArticle_title());
HashMap<String, String> mapValue=new HashMap<String, String>();
WebView webviewcontent=new WebView(HomeActivity2.this);
if(articleDataset.getArticle_summary().length()>75)
{
summary=articleDataset.getArticle_summary().substring(0,75)+"...";
}
else
{
summary=articleDataset.getArticle_summary();
}
String html ="<html><body><div><label> <font face=\"verdana\" color=\"#C1002B\" size=\"4\"><b>"+articleDataset.getArticle_title()+"</b> </font> </label>"+ "<label> <font color=\"#000000\" size=\"2\" face=\"verdana\">"+"|"+"</font></label> "+"<label> <font color=\"#AAAAAA\" face=\"verdana\" size=\"2\">"+articleDataset.getArticle_date()+" </font></label></div>";
html=html+"<div><label> <font color=\"#000000\" face=\"verdana\" size=\"2\">"+summary+" </font></label></div></body></html>" ;
webviewcontent.getSettings().setJavaScriptEnabled(true);
webviewcontent.clearCache(true);
final Activity activity = HomeActivity2.this;
webviewcontent.loadData(html, "text/html", "utf-8");
if(i==articleParsedValue1.size()-1)
{
webviewcontent.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url)
{
// setContentView(R.layout.home);
if (dlg.isShowing())
{
dlg.dismiss();
dlg = null;
}
splash.setVisibility(View.GONE);
// setContentView(repl);
}
});
}
mainlinear4.addView(webviewcontent);
//webviewcontent.setOnTouchListener(HomeActivity2.this);
}
}
最佳答案
List<String> data; // declare here so that we can use it in onPostExecute().
public class YourActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
starttask();
}
private void starttask() {
new FileAsync().execute("start");
Toast toast = Toast.makeText(yourActivity.this," start:" , 7);toast.show();
}
class FileAsync extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
m_ProgressDialog = ProgressDialog.show(yourActivity.this,
"", "Loading ...", true);
}
@Override
protected String doInBackground(String... aurl) {
// These methods are calling data from web service made
// in sperate class but you can do this here as well.
TempDAO tempDAO = new TempDAOImpl();
data = tempDAO.getDataList(arg1,arg2);
return null;
}
protected void onProgressUpdate(String... progress) {
Log.d("ANDRO_ASYNC",progress[0]);
}
@Override
protected void onPostExecute(String unused) {
TextView textData= new TextView(YourActivity.this);
textData.setText(data.get(1));
textData.setTextColor(Color.WHITE);
textData.setGravity(Gravity.CENTER);
setContentView(textData);
m_ProgressDialog.dismiss();
}
}
关于android - Android中如何实现ASyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792992/
我今天在我的 Android 项目中遇到了一个涉及 aSyncTasks 的问题,经过一些研究找到了答案,并且与我交谈过的人都没有意识到,所以我想我会与 SO 社区分享,以防万一有人发现它有任何用处。
我目前正在 AsyncTask 的 onPostExecute 方法中执行类似的操作,其中 NewTask 不是当前正在执行的任务: private class OlderTask extends A
所以,我正在研究一个条形码解码器,一旦我们有了条形码,它就会通过互联网进入多个 API 来解码刚刚扫描的内容。问题是我必须将一些 XML 解析链接在一起,我不知道我做的是否正确。 因此,扫描条形码后,
我的团队开发了一个新的 Android 应用程序,它广泛使用了 Room。 我不确定我们是否正确使用 AsyncTask。 我们不得不在 AsyncTasks 中包装所有对 insert/update
我查看了其他问题,但未能澄清我对从另一个任务调用任务的疑问,我有以下代码: protected List doInBackground(String... params) try {
我正在开发一个访问 Web 服务的应用程序,并使用从中获取的 JSON 创建一个对象并在我的代码中使用它。尽管我的应用程序正在运行,但我不知道它是否写得很好且完美无缺。 我将解释我的内容,然后放置一些
虽然我还没有尝试过,但从理论上讲,我问这个问题只是为了消除我的疑虑。 我有这样一个场景:1. 向服务器发送请求并接收 JSON 响应。为此,我正在使用 AsyncTask,因为接收响应可能会有延迟。2
我有以下 AsyncTask 的实现,允许多个 AsyncTask 同时运行: public abstract class MyAsyncTask extends AsyncTask { pu
花了很多时间试图解决这个问题,我已经阅读了很多问题、论坛、答案......但它仍然不会更新 UI。 我的最终目标是从用户那里获取一个搜索词,并将一个 httprequest 发送到用 JSON 回复的
我有一个异步任务 private class LoadData extends AsyncTask { private String WEBURL; LoadData(String u
我正在用 android 做一些编码工作。我几乎遇到了一个问题,为了解决这个问题,我需要一个匿名 AsyncTask 类来执行。但我还需要在执行之前传递并反对这个类。我尝试了下面的代码,但它不起作用,
我有两个 AsyncTask:第一个寻找素数,如果成功,我必须调用第二个 AsyncTask 显示单词“Yop!” (将这个词添加到数组列表中,并显示在AsyncTask三)。 如果我从 onProg
我想使用 AsyncTask 将图像加载到 ListView。 private class LoadImageTask extends AsyncTask,Void,Bitmap>{ @Sup
在我的 AsyncTask 的某个时刻,在完成一些验证之后,我需要派生另一个线程来做一些其他工作。所以我现在想要两个后台线程,每个都做自己的事情(每个执行大约 2-3 秒)。我们的想法是最大限度地提高
(这与空指针无关):我在 AsyncTask 中有一个进度条,并且添加了一个取消按钮来取消 asynctask。 我可以从异步任务外部取消异步任务,但我需要在异步任务下实现的progressdialo
我有一个 Activity ,在启动时调用“json”来获取歌曲的数据类别,之后我调用方法“AsyncTask”来获取来自另一个“JSON”的歌曲列表问题是,当我启动 Activity 时,它被锁定,
我想做以下事情。我想显示一个包含信息和图像的列表。这些图像需要一段时间才能加载,所以我想我会采取不同的方式。我会使用两个 AsyncTasks。第一个创建所有布局并用除图像之外的数据填充它。第二个只是
如果我做了这样的事情: public class MyFragment extends Fragment { private GetDataTask mGDT; //onCreat
在 Android Activity 中,我在 onCreate 方法中执行 AsyncTask。我应该在 AsyncTask 的 onPostExecute 中还是在 OnCreate 方法中声明
我对 AsyncTask 有疑问我尝试为 10 个 Json 文件向互联网打开 10 个请求,因此我读取它并将其保存到用户设备_由于数据差异,此文件必须分开,包括。 那么,将每个请求放在单个 Asyn
我是一名优秀的程序员,十分优秀!