LibGDX无法在Android API 21上运行?(LibGDX not work on Android API 21?)
我有Android API 21和20.但是libgdx在21中不起作用! 最新版本libgdx与API 20一起使用。但是当我用API 20构建项目时,Eclipse返回错误:
"appcompat_v7/res/values-v21/themes_base.xml:191: error: Error: No resource found that matches the given name: attr 'android:colorPrimaryDark'."
我找到了更多关于此的答案,但每个人都告诉你需要使用API 21。
Appcompat v7和ActionBarActivity
我做什么?
PS抱歉我的英文!
I have Android API 21 and 20. But libgdx not work in 21! Last version libgdx work with API 20. But when I build project with API 20, Eclipse return error:
"appcompat_v7/res/values-v21/themes_base.xml:191: error: Error: No resource found that matches the given name: attr 'android:colorPrimaryDark'."
I finded more answers about this, but everybody tell what you need use API 21.
Appcompat v7 and ActionBarActivity
What me do?
P.S. Sorry for my English!
原文:https://stackoverflow.com/questions/28267316
最满意答案
您可以为每个核心启动一个任务,因为任务完成后会启动新任务。您可以根据ProcessorCount或特定数量使用numOfThreads
int numOfThreads = System.Environment.ProcessorCount; // int numOfThreads = X; for(int i =0; i< numOfThreads; i++) task.Add(Task.Factory.StartNew(()=> {}); while(task.count>0) //wait for task to finish { int index = Task.WaitAny(tasks.ToArray()); tasks.RemoveAt(index); if(incomplete work) task.Add(Task.Factory.StartNew()=> {....}); }
要么
var options = new ParallelOptions(); options.MaxDegreeOfParllelism = System.Environment.ProcessorCount; Parallel.For(0,N,options, (i) => {/*long running computattion*/};
要么
您可以使用BlockingCollection实现Producer-Coustomer模式
这个主题由Dr.Joe Hummel在他的Pluralsight课程“异步和并行编程:应用程序设计”中精心教授
You can start one task per core,As tasks finish start new ones.You can use numOfThreads depending on ProcessorCount or specific number
int numOfThreads = System.Environment.ProcessorCount; // int numOfThreads = X; for(int i =0; i< numOfThreads; i++) task.Add(Task.Factory.StartNew(()=> {}); while(task.count>0) //wait for task to finish { int index = Task.WaitAny(tasks.ToArray()); tasks.RemoveAt(index); if(incomplete work) task.Add(Task.Factory.StartNew()=> {....}); }
or
var options = new ParallelOptions(); options.MaxDegreeOfParllelism = System.Environment.ProcessorCount; Parallel.For(0,N,options, (i) => {/*long running computattion*/};
or
You can Implement Producer-Coustomer pattern with BlockingCollection
This topic is excellently taught by Dr.Joe Hummel on his Pluralsight course "Async and parallel programming: Application design "
相关问答
更多-
当我遇到类似这样的情况时,我通常会构建一个服务来异步处理请求,并返回一个句柄,我可以用来检查它在数据库中的状态。 恕我直言,把它作为网络应用程序中的一个线程拆分似乎你试图将一个方形钉插入一个圆孔。 When I've had cases like those, I usually would build a service to asynchronously process requests, and return a handle that I could use to check on its stat ...
-
这是一个很好的问题,需要时间作为Android程序员才能充分理解这个问题。 事实上AsyncTask有两个相关的主要问题: 他们与活动生命周期的关系很差 它们非常容易地创建内存泄漏。 在RoboSpice Motivations应用程式( Google Play提供 )中,我们会详细回答这个问题。 它将深入了解AsyncTasks,Loader,它们的特性和缺点,并向您介绍网络请求的替代解决方案:RoboSpice。 网络请求是Android中的常见要求,本质上是长时间运行的操作。 这是摘自应用程式的摘录: ...
-
这种无所谓。 问题不在于时间问题,而在于你的代码在做什么。 如果您正在执行异步I / O,那么您仅在单个请求之间的短时间内使用该线程。 如果你在做CPU工作......那么你正在使用CPU。 没有“线程池饥饿”,因为CPU被充分利用。 真正的问题是当你阻止不使用CPU的工作时。 在这种情况下,线程池饥饿会导致CPU利用率不足 - 你说“我需要CPU来完成我的工作”,然后你实际上并没有使用它。 如果你没有使用阻塞API,那么在Task.Run中使用Task.Run没有意义。 如果你不得不异步运行一些遗留的阻塞 ...
-
您可以为每个核心启动一个任务,因为任务完成后会启动新任务。您可以根据ProcessorCount或特定数量使用numOfThreads int numOfThreads = System.Environment.ProcessorCount; // int numOfThreads = X; for(int i =0; i< numOfThreads; i++) task.Add(Task.Factory.StartNew(()=> {}); while(task.count>0) //wait for t ...
-
首先,如果你记住你提到的所有要点,你肯定是在“正确的方向”。 您描述的问题非常常见,并且是大多数应用程序所关注的问题 你的一些假设存在问题: Activity + AsyncTask。 完全不起作用,因为AsyncTask绑定到特定的Activity实例,并且一旦重新创建了Activity(设备方向更改就是一个示例),AsyncTask被绑定到“错误”的上下文。 没有人说AsyncTask必须从Activity执行!! 它也是一个很好的做法,使用Android Service派生类的AsyncTask (不 ...
-
使用多个长时间运行的优化ASMX Web服务(Optimizing an ASMX web service with Multiple Long-Running Operations)[2023-04-26]
您可以使用一对AutoResetEvents ,每个线程一个。 在线程执行结束时,您调用AutoResetEvents.Set()来触发事件。 产生线程后,使用WaitAll()和两个AutoResetEvents。 这将导致线程阻塞,直到设置了两个事件。 这种方法的警告是你必须确保调用Set(),否则你将永远阻止。 另外,请确保使用线程执行正确的异常处理,否则当无法处理的异常导致Web应用程序重新启动时,您将无意中导致更多性能问题。 MSDN有关于AutoResetEvent用法的示例代码。 You ca ... -
您很可能在使用ASP.NET应用程序中的线程时出错。 你正在使用异步页面,还是使用新的Thread()? 后者是一个错误,当请求完成时,可以让你进入一些HttpContext的问题,但线程仍在运行。 请编辑您的问题,以更详细地介绍您使用线程处理的内容。 You are quite possibly making a mistake in your use of threads in an ASP.NET application. Are you using asynchronous pages, or ar ...
-
不,它不会阻塞任何其他线程,除非该方法获取一个公共锁(例如由于Synchronized属性)或者调用一个同步方法本身。 正如达林所说,你可能会耗尽线程池,但我不认为这就是你的问题所担心的。 要明确,如果没有涉及任何同步,你肯定可以有两个线程同时执行相同的静态方法。 No, it's not going to block any other threads unless the method either acquires a common lock (e.g. due to the Synchronized ...
-
您应该立即返回状态为202 Accepted 。 除此之外,HTTP规范同意Jonathan的回答 : 使用此响应返回的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针或用户可以期望满足请求的某些估计。 您可以使用以下命令设置状态(例如,在servlet中): response.setStatus(HttpServletResponse.SC_ACCEPTED); 其中response是为请求提供的HttpServletResponse 。 编辑 (重新:评论): 好的浏览器会将任何2XX状态视 ...
-
是否应该将AsyncTask用于长时间运行?(Should or should not AsyncTask be used for long-running operations? [duplicate])[2023-04-29]
AsyncTask公开的接口定义了一个设置,一个后台操作,以及一个可以更新UI的“on done”回调。 这意味着它的预期用途是用于具有明确定义的结束的操作,从而产生对用户的反馈。 如果您需要正在进行的后台线程,请使用Executor执行承载正在进行的操作的Runnable实例。 但请谨慎使用,因为当您的应用程序离开前台时,该线程将继续运行。 仔细制作你的Runnable ,使其可以中止(可以使run()方法干净地返回)。 值得注意的是, AsyncTask只会强制您进入一个定义良好的模式,以执行异步操作, ...