安卓-问题与异步任务
我有一个回收视图,显示从服务器下载的信息.我希望它在所有这些过程中都能响应,所以我使用异步/等待操作和任务编写了它.问题是,当它等待下载信息时,UI仍在继续工作,要么崩溃,因为尚未下载,或者还没有显示所有信息. 如果GetDevicesInfo()是异步,则该应用程序崩溃,因为尚无信息可显示.由于某种原因,如果我将代码放在方法中的方法中(然后评论呼叫),则可以正常工作. DisplaySensorStates()的情况不同. 这就是当方法不是异步时的一切的样子: ...当它是异步时: appereantily,当它下载温度的信息时,视图已经显示了现有项目,这只是第一个. 代码: namespace *********.Fragments { public class Dashboard : GridLayoutBase { JsonFetcher jsonFetcher; private ISharedPrefe
8 2024-04-22
编程技术问答社区
当使用有限并发级任务调度器时,延续性任务悬而未决
我正在努力在C#(.NET 4.0)中使用TPL. 我创建了一个自定义API,以简化Web请求的创建并下载内容(使用连续任务异步).该部分正常工作. 当我尝试使用LimitedConcurrencyLevelTaskScheduler时,我遇到的问题(在 samples中在任务的MSDN文档)创建.如果您不熟悉该课程,那么它所做的就是限制安排到任意号码的任务的并发程度. 基本上,我想将Web请求任务链的创建推迟到由LimitedConcurrencyLevelTaskScheduler计划的任务中,以便我可以限制并发下载的数量. 不幸的是,我的程序在安排第一组并发任务后悬挂.假设我的任务仅限于4度并发.在这种情况下,将启动4个任务,然后该程序将悬挂.任务永远不会完成. 我创建了一个最小的示例来简单说明问题.我正在使用文件读取而不是使用WebRequest.我将并发程度限制为1. class Program { static Func
6 2024-04-21
编程技术问答社区
所有任务完成后继续任务
在某些课程中,我想与任务不同步加载2个集合并停止忙碌 我尝试这样的事情 var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext(); WaitingIndicatorViewModel.IsBusy = true; var loadData1 = new Task>(GetData1FromService).ContinueWith(t => Data1Collection = t.Result, uiScheduler); var loadData2 = new Task>(GetData2FromService).ContinueWith(t => Data2Collection = t.Result, uiScheduler); Task.Factory.StartNew(() =>
10 2024-04-20
编程技术问答社区
AsyncCTP:创建一个可被IAwaitable的类
我发现自己想实现一个可鉴定类(可以在不阻止线程的情况下实现异步调用的东西). 我已经安装了asyncctp的最新版本,编译器说我需要一个iscompleted()成员.好的,所以CTP预览已经稍微移动了一点(我明白了,就像预览一样) 问题:asyncctp语言扩展的哪个接口期望现在? 问题:在所有这些中,我假设我可以通过lamda/demegate向" iawaitable"发出信号?这可能吗?我们叫Endawait吗? IntelliSense建议您调用Endawait检索结果...因此听起来不正确.有什么想法吗? 到目前为止,我发现的所有示例都是针对ASYNCCTP库已经实现的功能,例如: await new WebClient().DownloadStringTaskAsync(uri).ConfigureAwait(false); 来自 背景: I find myself on Jon Skeets page (again) looki
4 2024-04-16
编程技术问答社区
如何禁用RecyclerView和AsyncTask中的按钮?
我正在尝试从Retrofit响应中单击RecyClerview后尝试禁用按钮. 应用程序正在使用recyclerview来填充列表,我正在使用Raturofit来通信与后端REST API.一个项目内有两个按钮,然后在单击时激活了改造客户端.如果API是成功按钮的响应,则应禁用.我遇到了两个问题: 前几个项目正常工作,但是在几个滚动按钮之后,我从未单击的按钮也被禁用了. 其次是在列表中进一步的随机按钮仍然可以单击. public void onBindViewHolder(final NewsViewHolder holder, int position) { holder.btnPositive.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // i
6 2024-04-05
编程技术问答社区
在AsyncTask中执行Android-on职位
我当前有一个asyncTask,该>在preexecute上开始一个加载条,在后台将某些内容发送到服务器,然后在邮政执行后删除对话框并启用按钮.但是,由于doinbackground返回null,我的帖子执行并未执行.我正在尝试弄清楚我能做的事情,让执行后运行.有任何想法吗?谢谢 代码: class DatabaseAsync extends AsyncTask{ @Override protected void onPreExecute(){ dialog = ProgressDialog.show(MainFeedActivity.this, null, "Posting..."); } @Override protected Void doInBackground(Void... arg0) { Log.d(T
12 2024-04-05
编程技术问答社区
在运行异步时,如何禁用按钮? (安卓)
我正在执行下载任务时试图禁用按钮.我尝试使用设定的,设置的性能和设置可见性.我想我尝试了这些选项的所有组合.所有这些都可以在任务执行时禁用按钮点击事件,但是事件仍在以某种方式注册,当我对按钮进行反应时,如果我在禁用该按钮时单击该按钮时,则调用处理程序看不见或"走了"! (不确定它是否称为处理程序,我想参考onclick方法). 我还插入了一个计数器和一个日志,以验证我上面说的内容.代码如下所示.这件代码if(counter>1) return;是为了停止崩溃,但我想将其删除,因为我想重新启用该按钮,而不是永远禁用它. onclick: public void downloadOnClick(View v) { counter++; Log.d(this.getLocalClassName(), "Button was clicked " + counter + " times."); if(counter>1) return; Conn
6 2024-04-05
编程技术问答社区
显示AlertDialog的异步任务
在过去的几天中,我无法解决对话框的问题.我正在运行一个线程以显示5000ms的对话框并将其删除.我正在尝试展示吐司("成功").问题是我也第二次获得对话框.我是Android开发的新手,我需要使用异步任务来解决此问题,以便我可以延迟第二个线程并显示一个警报对话框.用正面按钮而不是吐司构建器.我很盯着很多 在这里,我将我的凭据发送到服务器,在发送时,我正在显示一个5000ms的进度对话框,我想拥有一个单独的线程以显示对话框.使用一个正面按钮的builder(用户获得一个时,我应该在logcat中的响应,我应该检查响应== 1或不从logcat中显示构建器) plz有人帮助我使用一些代码段解决此问题. 预先感谢. 这是我需要实现异步任务的代码 Button signin = (Button) findViewById(R.id.regsubmitbtn); signin.setOnClickListener(new OnClickListener() {
10 2024-04-04
编程技术问答社区
在AsyncTask中,如何将数据从doInBackground() "即时 "传递到主用户界面,而不是在每个循环之后?(BufferedReader)
edit1: 我确实更改了代码,以便更新在段循环内完成.但是,没有变化.在下面的代码中显示了这一点.另外,在OnProgressupdate()上删除了其他无关线. 在下面的代码中显示. 请像教业余一样回答. 我正在将数据从doinbackground()传递到当前的主要UI.有用.但是,这很慢. 我想显示"即时"结果,而不是在循环完成之后.但是,这就是编写代码的方式,但是,如果循环运行100次,我只能在100次迭代完成后一次获得结果.这很奇怪.我希望每次迭代后的结果输出.如何实现这一目标. 现在; protected Void doInBackground(Void... params) { try { //bunch of code for(int k=x1[3];k
8 2024-04-04
编程技术问答社区
如何在切换片段时保留进度条状态?
我有一个导航抽屉,其中有许多选项 图像材料 视频材料 音频材料 我们正在为每种材料保持单独的片段,并且每个片段都有网格视图,其中我们填充了该材料的缩略图.用户单击缩略图后,将下载完整的材料(使用asynctask).我正在下载完整材料时在缩略图上显示进度栏. 现在,我遇到一个问题,假设进度栏显示为20%,我将片段切换到另一个,然后又回到了相同的问题,下载进度栏丢失了. 我去了一个解决方案,以使用意图服务和广播接收器来填充进度栏,但是在这种情况下,在每个添加字节上都将进行广播是一个好习惯吗? 解决方案 上一个答案还不够好,我组成了一个新答案,看看,效果很好. 该代码由片段的基类组成,两个片段,用于网格元素的数据和主UI线程的模型. 基类: import android.app.Activity; import android.app.Fragment; import android.content.Context; import and
活动 -> 异步任务 -> 广播接收者 -> 更新用户界面
我是从Activity开始AsyncTask. AsyncTask完成执行时,我需要发送一个广播,该广播需要调用Activity更新UI的方法. 实现这一目标的任何好方法. 解决方案 是. 如果AsyncTask是您Activity的内部类,则它可以访问任何成员变量和您的Activity方法.如果不是,那么您可以简单地将变量传递给其构造函数,甚至可以将变量传递给Activity Activity Activity方法的引用.没有任何代码,很难说太多. 通过Activity的实例并使用其方法,如果它是单独的类,则可以创建一个构造函数并执行 之类的操作 public class MyTask extends AsyncTask // add your params { private MyActivity activty; public MyTask (MyActivity act) { this.a
12 2024-04-03
编程技术问答社区
安卓系统中BroadcastReceiver的AsyncTask在死线程上向处理程序发送消息时出现错误
我在应用中实现了推送通知.收到推送消息后,我会在异步方面致电Web服务.当使用应用程序或在内存中,这可以正常工作.但是,如果我从设置中停止应用程序,然后将消息推向设备,则有一个例外,例如"将消息发送给死线上的处理程序".这可能是因为该应用程序没有生存. 有人可以让我知道是否可以从推送通知接收器中实际删除异步并处理消息? 问候 Sunil 解决方案 IMO asynctask仅应用作与活动相关的背景任务的助手(即UI). 在您的情况下,我将使用意图服务,这是一项准备执行背景任务的服务.所以: 将新通知推到设备上. 您在广播接收器中收到通知. 您发射意图服务以执行与WS的同步 IntentService完成工作,完成后,它会引起广播活动. 在您的活动中,在步骤4中附加了广播的广播接收器.如果存在,您的UI会被通知,否则不会发生不好的事情.您可以选择在清单中注册默认广播接收器,以处理步骤4的广播,例如,显示状态栏通知. 其他解决方案 这是由于
6 2024-04-03
编程技术问答社区
如何纠正由于'java.lang.IllegalArgumentException'而导致的Instrumentation运行失败。
我正在从事一个课程项目,该项目处理通知,异型和广播回收者.我有三个测试要进行,第一个测试失败了: 的堆栈跟踪错误 测试无法运行到完成.原因:"仪器运行失败了,因为'java.lang.illegalgumentException''.检查设备logcat以获取详细信息 logcat是巨大的.如果您可以告诉我我可能正在寻找什么,我可以用标签缩小它:函数. 其他两个测试正常运行. 以下是第一类文件,我在eclipse中没有显示错误. public class MainActivity extends Activity implements SelectionListener { public static final String TWEET_FILENAME = "tweets.txt"; public static final String[] FRIENDS = { "taylorswift13", "msrebec
从广播接收器中调用AsyncTask android
因此,当前我有一个andnctask类,当我单击一个按钮时,该类可运行并将数据发布到我的服务器上(效果很好). 我现在想做的是处理用户未连接到Internet时会发生的事情.因此,我已经设置了这些类以在Internet连接时通知应用程序,以便可以自动将数据发送到服务器. asynctask类(内类) private class HttpAsyncTask extends AsyncTask { ProgressDialog dialog = new ProgressDialog(getActivity()); final AlertDialog finishedDialog = new AlertDialog.Builder(getActivity()) .setCancelable(false) .setPositiveButton(android.R.string.ok, null)
8 2024-04-03
编程技术问答社区
在Android中,我应该选择Boost Asio还是Aysnc Socket线程?
我正在为Android开发基于网络的UI应用程序,该应用将执行以下功能 需要与在基于N/W的嵌入式设备上运行的TCP服务器进行通信(一次> 100个). 定期轮询这些设备以获取更新的信息 从这些设备发送和接收信息 所有上述信息将由应用程序的UI 控制和管理 考虑到上述情况,该应用可能必须为多个连接产生多个线程并管理它们.因此,我的查询是 使用boost.asio库开发网络模块是不错的方法吗?还是可以打开100个插座线以进行连接? 如果使用了boost.asio,则将使用NDK分开开发网络模块,以访问JNI,这又可能导致响应缓慢吗? 另外,还有其他更好的选择吗?期待您的输入! 非常感谢. 解决方案 我建议看看 new I/o 支持Android.使用它,您可以在单个线程中处理多个连接,API原理与Posix select()呼叫相似. 如果您决定选择第二种选项(在C/C ++中实现的网络代码),我认为您不应该担心JNI性能.无论如何
4 2024-04-02
编程技术问答社区
布尔值在点击取消按钮时没有变化-如何停止AsyncTask-Android?
我是初学者,所以请清楚地解释您的答案.谢谢 编辑2 我现在有 public class MainActivity extends Activity { //other declarations public ReadTask readTask; protected void onCreate(Bundle savedInstanceState){ readTask = new ReadTask(); private OnClickListener test = new OnClickListener() { @Override public void onClick (View V) { readTask.execute(); //new ReadTask().ex
8 2024-04-01
编程技术问答社区
安卓线程vs异步任务vs从BLE调用的IntentService onCharacteristicChanged()
我有一个Android应用程序,我从中接收BLE数据(每62ms通过通知).该应用程序可以通过缓冲作者将数据保存到文件.在每个onchacteristicChanged()回调上,我调用一个异步,线程或IntentService,如果用户启用的文件保存,则可以在文件上写文件. 异步箱似乎正常工作.但是文档说执行必须在UI线程上调用,我正在从BLE回调中调用它.那是问题吗?我应该如何修复它? 使用线程导致此错误:gki_exception 意图服务永远不会转到OnhandLeNIntent().这里有什么问题? 这是一些代码: ... _context = this.getApplicationContext(); ... private BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { ... @Override public void onCharacteristicChang
如何在安卓系统中实现块
In IOS we use blocks when we want to handle an action when a particular situation occur. 在处理情况的Android中是否有这样的方法 oncompletion ,我们可以在任何地方添加. 喜欢异步方法它知道何时完成工作.它执行OnPostExecute.当特定情况达到并像一样,我们如何创建这种类型的方法. 今天,我找到了一种行为的方式,就像iOS BaseAsyncTask(new Callback(){ onPostResult(string result) { // do whatever you want to do with the result got from asynctaks } }); 这是一个代表,当它达到特定情况时会打电话. 我是对的,上面的代码像我们在iOS中一样中的块.或其他任何在Android中创建块的方法. 解决方案 看来您的
6 2024-04-01
编程技术问答社区
黑莓类相当于AsyncTask?
我的要求是拥有一个线程,该线程可以维护黑莓设备和服务器之间的套接字连接,并交换命令,类似于请求和响应. 我的问题是,我需要将此线程始终在后台运行,并将UI保留给用户.因此,当服务器有一个命令时,此线程将解析并更新UI,并且如果有BlackBerry用户的操作,它将其发送到服务器,而服务器则将其处理. 我使用AsyncTask在Android中开发了相同的应用程序,并且运行良好. But in BlackBerry, as there's no such class, I used the InvokElater()选项.服务器和BB设备之间的通信正常,但是在BlackBerry上冻结了UI. 有人知道如何正确吗? 解决方案 Vishal在正确的轨道上,但是与Android的AsyncTask匹配还需要更多.由于BlackBerry上的Java 1.3无法获得枚举和仿制药,因此您无法完全匹配Android API. 但是,您可以做这样的事情(未经测试...这
6 2024-03-31
编程技术问答社区
安卓系统。调用AsyncTask.execute()会使应用程序崩溃
我有一项活动,我从给定的URI加载图像. Android培训文章建议它应该在后台进行,以免阻止UI.我遵循了相同的文章. 这是我称之为asynctask 的片段 Uri uri = .... ImageLoaderTask task = new ImageLoaderTask(imageView); task.execute(uri); 我的ImagelOadertask在下面给出. public class ImageLoaderTask extends AsyncTask { private WeakReference imageViewReference; public ImageLoaderTask(ImageView imageView) { // Use a WeakReference to ensure the ImageView can be garbage
4 2024-03-31
编程技术问答社区