【Android——主线程繁忙(I/Choreographer: Skipped 38 frames!)】教程文章相关的互联网学习教程文章

Android上的多线程处理程序的最佳实践是什么?【代码】

我有一个应用程序,例如使用多个HTTPRequests >获取会话ID>获取一些locationdata>获取现有类别>(…)等等 我创建了一个HTTPRequestHandler,它基本上管理每个请求的所有AsynTasks ……这很有效,但我的问题是,我不知道管理不同的AsynTasks的好方法.例如,您需要先获取SessionId任务,然后才能启动GetSomeLocationData任务 所以在我的HTTPRequestHandler中,我有一个队列,它启动依赖AsyncTasks,如:private void startSessionIdTask(...) {...

Android中的服务和Java中的线程有什么区别?

Android中的服务和Java中的线程有什么区别? 共同点:两者都是在后台运行。 不同点: 1、进程优先级不同,当应用退出后,JAVA中的线程将成为空进程,而Android中的线程会成为服务进程。 在实际的开发过程中,我们可能需要每隔3秒实时的上传当前用户的位置信息,如果这时采取Java中的线程来完成该操作,那么一旦当前的...

java – 使用Android UI线程杀死的内容【代码】

在一项活动中,我分拆了几个单独的线程.稍后,在其中一个子线程上,我进行以下调用:((Activity) context).runOnUiThread(new Runnable() {public void run() {String message = "Exception thrown: Developer mode was enabled while " +"trying to access the app.";throw new RuntimeException(message);} });现在,除了UI线程还会杀死什么?其他线程也会死吗?当应用程序崩溃时,它仍然在后台运行(我认为)解决方法:我认为与该进程相...

java – android中的套接字,线程和服务,如何让它们一起工作?【代码】

我正面临着线程和插座的问题,我无法弄明白,如果有人可以帮助我,我会非常感激. 有事实: 我有一个服务类NetworkService,在这个类里面我有一个Socket属性.我希望它在服务的整个生命周期中处于连接状态. 要连接套接字我在一个线程中做,所以如果服务器必须超时,它不会阻止我的UI线程. 问题是,进入我连接我的套接字的线程一切都很好,它是连接的,我可以与我的服务器通信,一旦这个线程结束,我尝试重用套接字,在另一个线程中,我有错误消息S...

UML:如何为移动应用程序建模UI和后台线程(iPhone / iOS,Android)

Stackoverflow上有一些关于如何在UML中建模不同线程的相关主题,例如:Is there an inituitive UML approach to depict threads. 但我还是觉得,我的情况还没有讨论过,尽管它应该很常见: 我正在创建一个iPhone应用程序,我显然有一个主UI线程,我也使用Background-Threads来执行远程调用等.我基本上有4个不同的方面,我喜欢在我的diagramm中显示: >向用户显示的UI.> Main-UI-Thread正在执行的任务(因此阻止了UI)> Background-Threads执...

Java-Android中的多线程【代码】

我的问题是,我有一个活动,并在那里我想采取的结果read_list方法.但是read_list方法需要很长时间才能完成,因此我想创建一个新的Thread,然后运行此方法将其返回主活动.我知道我可以做类似的smtAsyncTask,但是现在我想用这种方式来做.public class Read<T> implements Runnable(){Thread t;read(){t = new Thread(this);t.start();}public void run(){read_list();}public ArrayList<T> read_list(){..........return ArrayList<T>}}主...

java – Android – 更新arraylist时的线程安全性【代码】

我的Activity包含一个BroadcastReceiver和一个AsyncTask,它们都更新了一个ArrayList(经常).我知道AsyncTask在后台运行,并且BroadcastReceiver和AsyncTask线程可能同时更新ArrayList.我怎样才能让它们成为线程安全的呢? 编辑:正如亚历山大提到的,除非你明确地实现它,否则在主线程上运行BroadcastReceiver.解决方法:AsyncTask作为单独的线程运行.BroadcastReceiver通常在主线程上运行,除非你在’registerReceiver’中另外指定(参见...

java – 在UI线程上修改视图时Android UI不会崩溃【代码】

场景: 我在测试片段中的线程时遇到了一个奇怪的问题. 我在Kotlin中写了一个片段,其中包含onResume()中的以下片段:override fun onResume() {super.onResume()val handlerThread = HandlerThread("Stuff")handlerThread.start()val handler = Handler(handlerThread.looper)handler.post {Thread.sleep(2000)tv_name.setText("Something something : " + isMainThread())} }是MainThread()是一个函数,它检查当前线程是否是主线程,...

如果我的Android应用程序没有UI,我应该在单独的线程中工作吗?

我的应用程序本质上是一个在启动时启动的服务(由启动完成的接收器),并应定期收集数据,通过网络发送数据,然后进入休眠状态(可能使用AlarmManager).它没有任何活动 – 没有任何用户界面. 是否有任何理由产生额外的线程来执行应用程序逻辑?如果没有,我应该在哪里执行逻辑?在OnStart方法?解决方法:Is there any reason to spawn an additional thread to perform the application logic? 绝对.如果5-10秒内没有响应,您的服务将被终止...

android – 获取主线程的消息队列和处理程序【代码】

如何从另一个线程获取主线程的消息队列? Looper.getMainLooper()获取主线程的looper但我无法找到另一种线程的looper获取MessageQueue的方法.而且,我如何获得主循环器的处理程序?我无法找到任何方法来获得它.解决方法:@ r.v, 我有类似的需求.我想知道MessageQueue什么时候是空的,当我发布一些东西时,我想知道什么时候它变空了,什么都没做.我查看了MessageQueue.IdleHandler,发现它没有像我想要的那样表现我提出了另一个解决方案. ...

java – 带有部分唤醒锁的背景中重复线程的android服务【代码】

我有一个运行在应用程序服务中的线程,该应用程序从之前使用webview登录的页面中读取数据.该线程工作正常. 现在我想定期重复这个帖子,比如说一分钟,即使手机处于睡眠/屏幕关??闭状态.我知道我可能不得不用wake_lock来解决它,但我不知道如何. 我这里有3个问题.我尝试用while(true)sleep(60000)重复该线程….但是在手机屏幕关闭后停止线程.有没有更好的办法? 然后我还想将字符串数量与零进行比较.如果字符串计数大于零,则表示xxx. 任...

如何在Android上顺序运行java线程【代码】

我有七个声纳传感器,我的目标是在Android平板电脑上顺序显示这些传感器值. 为了在平板电脑屏幕上动态显示传感器值,我使用了Runnables. 但是,如果声纳传感器并行工作,则会引起声纳传感器之间的干扰.因此,我需要让它们按顺序工作. 我的问题是:是否可以按顺序使用线程在Android平板电脑上显示传感器值? 虽然我使用了join()和sleep(),但传感器仍然相互干扰.当我尝试使用wait和notify时,应用程序会给出内存不足的异常.我也尝试使用同步...

java – Android动画的简单线程问题【代码】

我正在尝试用一些简单的Android动画实现一个线程.我只是在睡眠中遇到错误() – 它说我需要一个方法.我知道可能有一个明显的解决方案.我的应用程序只是放置一个随机位置移动的球.我想要的是继续在随机位置放置形状.无论如何,有人可以告诉我我的线程做错了吗?谢谢.public class DrawingTheBall extends View {Bitmap bball; Random randX, randY; double theta; Handler m_handler; Runnable m_handlerTask; //for some reason I ...

java – Android错误:必须从主线程调用recreate()【代码】

我收到一个Android错误,即使错误信息非常明显,我也无法弄清楚如何让它正常工作. 错误消息是:java.lang.IllegalStateException: Must be called from main threadat android.app.Activity.recreate(Activity.java:4193)在我的应用程序中,会发送通知以注销用户(当他的令牌过期时). 在较旧的Android版本上,我没有遇到任何问题,但是从SDK 11开始,我必须使用recreate()方法.我得到它必须从主线程调用的错误. 我将recreate()语句移动到M...

java – 用于防止在GUI线程上进行调用的Android方法注释

在我正在进行的项目中,有大量的缓存在主线程上完成,这使得应用程序滞后.我的计划是制作这些的异步变体,但仍然保持同步调用,以便在asyncTasks中组合时更容易链接.我有这个问题,我希望以某种直观的方式阻止在GUI线程中使用缓存功能.有任何想法吗?可能吗?是否可以使用注释标记一个方法,以防止在GUI线程上调用它?解决方法:http://androidannotations.org/提供了一个利用注释来处理这个问题的库.它们有@UiThread和@Background等注释,...