大.
这是我的第一个AndroID应用程序中的Activity,这让我感到有些困惑.
public class NasaDailyImage extends Activity{ public ProgressDialog modalDialog = null;//------------------------------------------------------------------------------ @OverrIDe protected voID onCreate(Bundle savedInstanceState){ //Instantiate progress dialog,skipPing details. button b = //get reference to button b.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw v) { modalDialog.show(); // show modal Toast.makeText(getApplicationContext(),"Getting Feeds",500).show(); new AsyncRetrIEver().execute(new IotdHandler()); // Get the Feeds !! } }); }//------------------------------------------------------------------------------ public synchronized voID resetdisplay(boolean parseErrorOccured,boolean imageErrorOccured,IotdHandler newFeeds){ if(parseErrorOccured || imageErrorOccured){ // make a Toast // do not update display }else{ // make a Toast // update display // based on new Feed } }//------------------------------------------------------------------------------ class AsyncRetrIEver extends AsyncTask<IotdHandler,VoID,IotdHandler>{ @OverrIDe protected IotdHandler doInBackground(IotdHandler... arg0) { IotdHandler handler = arg0[0]; handler.processFeed(); // get the RSS Feed data ! return handler; }//------------------------------------------------------------------------------ @OverrIDe protected voID onPostExecute(IotdHandler fromInBackground){ resetdisplay( // call to update the display fromInBackground.errorOccured,fromInBackground.imageError,fromInBackground); }//------------------------------------------------------------------------------}
1. onCreate在UI线程上,所以我可以做任何我想做的事,但onClick不是.为什么我可以在该方法中制作ProgressDialog和Toast?为什么没有错误?
2. AsyncTask是NasaDailyImage的子类.这意味着它可以访问NasaDailyImage的所有方法,包括更新显示的resetdisplay().在onPostExecute中调用resetdisplay(),它在与UI不同的线程上运行.那么,为什么我可以在那里更新显示但却没有错误?
> onPostExecte()(及其对应的onPreExecute())也在UI线程上运行.
AsyncTask.onPostExecte()
documentation清楚地说明了这一点. AsyncTask是经过精心设计的,开发人员可以在后台工作之前和之后更新UI. 通常,您的代码将在UI线程上运行,除非您明确告知它.创建AsyncTasks,Runnables或Threads后,您需要确保了解代码的执行位置.在Activity中,假设您在UI线程上通常是安全的.
总结以上是内存溢出为你收集整理的android – 了解UI线程全部内容,希望文章能够帮你解决android – 了解UI线程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)