我讨厌内心阶层。 我有一个主要的活动,启动一个“短命”的AsyncTask。 AsyncTask 在一个单独的文件中 ,不是主要活动的内部类 我需要asynchronous任务更新主Activity的textView。 我知道我可以从onProgressUpdate更新TextView,如果AsyncTask是一个内部类 但是,如何从一个外部的,独立的,asynchronous的任务? 更新:这看起来像工作: 在活跃我呼吁任务 backgroundTask = new BackgroundTask(this); backgroundTask.execute(); 在我的构造函数中 public BackgroundTask(Activity myContext) { debug = (TextView) myContext.findViewById(R.id.debugText); } 其中debugging是一个AsyncTask的私人领域。 所以onProgressUpdate我可以 debug.append(text); 感谢您的所有build议
我目前正在使用Square for Androidnetworking通信进行Retrofit。 在创build进度通知的任务期间,有没有办法获得进度,类似于Facebook在上传图片时使用的通知? 使用案例将是加载一个图像希望完整的图像质量没有压缩或缩放。 我看到如何用asynctask来实现这一点,但是这将会破坏使用Retrofit的目的。 但是,这可能是我必须采取的路线。
在AsyncTask使用wait时,我得到ERROR/AndroidRuntime(24230): Caused by: java.lang.IllegalMonitorStateException: object not locked by thread before wait() 是否可以使用Asynctask来等待? 怎么样? 谢谢 class WaitSplash extends AsyncTask<Void, Void, Void> { protected Void doInBackground(Void… params) { try { wait(MIN_SPLASH_DURATION); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } protected void onPostExecute() { waitSplashFinished = true; finished(); } }
我遇到了Handler和runOnUiThread两个概念。 但对我来说,它似乎仍然是一个疑问,因为它们究竟在哪些事实上有所不同。 他们都打算从后台线程做UI操作。 但是我们select这两种方法时要考虑哪些因素呢? 例如,考虑一个在后台执行Web服务的可运行Thread ,现在我想更新UI。 什么是最好的方式来更新我的用户界面? 我应该去Handler或runOnUiThread ? 我仍然知道我可以使用AsyncTask并使用onPostExecute 。 但我只想知道其中的差别。
我不知道我在做什么错,但onPostExecute永远不会被调用。 创build了一个名为BaseActivity.java的基类 从我原来的活动,我扩展了这个类。 在BaseActivity中放置PostToOpenFeint类 从主要活动的UI线程中调用它我做的: new PostToOpenFeint.execute(); onPreExecute(),doInBackground(..)被触发,但由于某种原因,onPostExecute永远不会被调用。 先谢谢你! 戴夫 private class PostToOpenFeint extends AsyncTask<Void, Void, Void> { /* * (non-Javadoc) * * @see android.os.AsyncTask#doInBackground(Params[]) */ @Override protected Void doInBackground(Void… params) { // does all the work here return null; } /* * (non-Javadoc) * * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override protected void onPostExecute(Void result) { […]
我有一个函数, AppHelper.isOnline(Context context) ,我在我的应用程序的各个部分调用,以检查一个会话没有超时之前,提出一个HTTP请求。 public void onClick(View v) { Intent intent = null; switch (v.getId()) { case R.id.buttonPagamenti: if (AppHelper.isOnline(this)) { //here AppHelper.isOnline should have finished it's async task intent = new Intent(this, OrdineCreaActivity.class); this.startActivityForResult(intent, R.id.buttonPagamenti); } break; … 在AppHelper.isOnline()里面,我正在执行一个AsyncTasklogin,从而产生一个networking请求,这个请求不能在UI上运行,否则我会得到一个exception。 我需要等待它完成之前恢复与if内的代码。 我怎样才能做到这一点 ? 问题是活动首先启动,然后执行AsyncTask ,所以当活动期望有效的login会话时,它会中断。
我在运行AsyncTask时无法获取onPostExecute()方法。 当我尝试设置我的类扩展的onPostExecute()被覆盖的AsyncTask时,我得到以下的生成错误。 'AsyncTaskExampleActivitytypes的方法onPostExecute()必须覆盖或实现一个超types方法' 我试图摆脱@Override注释。 这摆脱了构build错误,但方法仍然不执行。 如果有人会指出我忽略了什么,我将不胜感激。 码: package com.asynctaskexample; import android.os.AsyncTask; public class AsyncTaskExampleActivity extends AsyncTask<Void, Void, Void> { AsyncTaskExampleActivity(){ super(); } @Override protected void onPreExecute() { } @Override protected Void doInBackground(Void… params) { return null; } @Override protected void onPostExecute() { } }
我有一个可以创build和popup一个DialogFragment的片段,但是当我点击后退button时,即使我明确地调用setCancelable(false),它也会closures对话框。 有没有办法让我的DialogFragment对后退button不敏感? public class LoadingDialogFragment extends DialogFragment { String title; String msg; public LoadingDialogFragment() { this.title = "Loading…"; this.msg = "Please wait…"; } public LoadingDialogFragment(String title, String msg) { this.title = title; this.msg = msg; } @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { final ProgressDialog dialog = new ProgressDialog(getActivity()); dialog.setTitle(title); dialog.setMessage(msg); dialog.setIndeterminate(true); dialog.setCanceledOnTouchOutside(false); dialog.setCancelable(false); return […]
我有以下class级: public class getURLData extends AsyncTask<String, Integer, String>{ @Override protected String doInBackground(String… params) { String line; try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(params[0]); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); line = EntityUtils.toString(httpEntity); } catch (UnsupportedEncodingException e) { line = "<results status=\"error\"><msg>Can't connect to server</msg></results>"; } catch (MalformedURLException e) […]
在大多数情况下,在处理案件时 用户线程( AsyncTask )执行后台处理 将计算结果传回给Activity或Fragment Activity或Fragment重新创build可能发生在用户线程完成其后台处理之前 到目前为止,从许多可靠的来源,我可以看到推荐的方式是使用Retained Fragment 来源 最佳实践:定位更改期间的AsyncTask http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html 有时我会听到事件总线库对处理活动,碎片和后台线程之间的关系很有帮助。 (请参阅https://github.com/greenrobot/EventBus 。它指出, 活动,片段和后台线程performance良好 ) 我遇到了一些非常受欢迎的事件公交图书馆 EventBus 玫瑰油 我想知道什么时候来处理Activities,Fragments和后台线程之间的关系,Event Bus如何与Retained Fragment方法有所不同? 哪种方式是推荐的方法?