Articles of 并发

Android中的并发文件访问

我知道许多操作系统在文件系统上执行某种locking以防止不一致的视图。 Java和/或Android对文件访问的线程安全性有任何保证吗? 我希望尽可能多地了解这一点,然后继续自己编写并发代码。 如果我错过了一个类似的问题,可以随意closures这个线程。 谢谢。

在销毁活动时停止处理程序可运行的任务

我通常将所有的Activities事件委托给一个单独的控制器类,它有一个处理Activity事件的特殊方法 @Override public boolean handleMessage(int what, Object data) { switch (what) { case ExerciseViewEvent.STARTUP: workerHandler.post(new Runnable() { public void run() { onStartup(); } }); return true; } 这样做是为了保持UI线程的响应,并在后台任务中进行所有的计算。 但是,当系统调用Activity.onDestroy()方法时,将调用controller.dispose()方法,以这种方式清除控制器中的所有内容 @Override protected synchronized void dispose() { …………….. if (model != null) { synchronized (model) { model.dispose(); } model = null; } helper = null; ………………… super.dispose(); […]

Android:每个应用程序一个与许多HttpClient实例

直到最近,我们的应用程序在整个应用程序中使用ThreadSafeClientConnManager共享一个Apache HttpClient实例。 http客户端实例由一个单例类保存。 由于我不喜欢单例模式的许多问题,我重新构造了我们的API访问器是一个每线程对象,但是现在对于每个线程(大部分意味着每个活动/服务在我们的情况下)创build一个新的HttpClient实例。 这并不是说我对这种新方法有什么问题,但是我已经读过,Apache人员build议每个应用程序只有一个实例是出于性能原因。 在视觉上,我们之前做的是这样的: HttpClient (thread safe) | | /\ / \ Activity1…ActivityN 现在,我们这样做: Activity1 … ActivityN | | | | HttpClient1 HttpClientN 你们在应用程序中如何做到这一点? 如果你在应用程序和潜在的并发线程之间共享一个HttpClient,你如何处理对它的访问呢?

Android并发使用

Android在不同的线程上并行执行代码有很多不同的方便。 但我不确定什么时候应该使用每一个,或者不同的方式是什么样的最佳实践。 何时/为什么要使用处理程序? 何时/为什么要使用装载机? 何时/为什么要使用AsyncTasks? 何时/为什么应该使用FutureTask? 何时/为什么要使用Executor? 什么时候/为什么应该使用线程/运行? 什么时候/为什么要使用Volley? 我错过了吗? 非常感谢您的帮助!

Android的BroadcastReceivers是否在新线程中启动?

如果我有一个在我的Service类中扩展BroadcastReceiver内部类,那么当BroadcastReceiver类从Service类读取/写入对象时,我应该关心同步吗? 或者BroadacstReceiver一种说法: BroadacstReceiver的onReceive()方法是否在一个额外的线程中启动?

HandlerThread vs Executor – 什么时候比另一个更合适?

我只是好奇,是否有时间我应该select一个Executor通过HandlerThread 。 有人比其他人优越,还是应该坚持HandlerThread ? 在我的情况下,我目前正在侦听一个ServerSocket的连接, ServerSocket理由Executor创build一个单独的线程上的每个请求。 尽pipe我举了一个具体的例子,但我只是在寻找一个比另一个更合适的例子。 不过,我欢迎对我的devise提出意见。

Androidanimation:等到完成?

在继续执行程序之前,我希望等待一个Android ImageView中的animation完成*,那么执行此操作的正确方法是什么? (在这种情况下,“完成”意味着它贯穿其所有的帧一次,并在最后一帧停止。我不清楚这个animation是否是一个android:oneshot =“true”animation,因为我将使用它多个次,但不会连续运行,而是间歇运行) 研究/猜测: 答:在心脏我的问题似乎是一个Java线程的问题,因为Android AnimationDrawable实现Java.lang.Runnable 。 所以也许线程是解决scheme。 也许答案会包括join ? B.其他人的做法似乎一直使用AnimationListener ,这对于我的简单需求来说似乎很困难和不必要的复杂。 另外我不确定如何去做。 C. AnimationDrawable类有一个(boolean)isRunning方法,可以在while循环中使用(即while(anim.isRunning()){wait(100ms)})。 但我有一种直觉,认为这是错误的做法。 尽pipe似乎在并发教程中提到了类似的东西 代码片段 this.q_pic_view.setImageResource(0); this.q_pic_view.setBackgroundResource(R.drawable.animation_test); AnimationDrawable correct_animation = (AnimationDrawable) this.q_pic_view.getBackground(); correct_animation.start(); //here I tried to implement option C but it didn't work while(correct_animation.isRunning()){ try { Thread.sleep(20); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } […]