草庐IT

主线程

全部标签

android - 无法在 45 秒内启动 Intent。也许主线程在合理的时间内没有空闲?

我正在编写Espresso测试。这是测试用例点击Fab,应用程序启动QuizActivity。让我向您解释一下我的应用程序。所以应用要求是-assets文件夹下有JSON文件我必须解析它并将数据存储在数据库中在主Activity上将此数据从数据库加载到recyclerview。有Fab按钮,点击它应用程序将随机数据列表(我已在recyclerview中加载)传递给QuizActivity这是我编码的方式-在MainActivity的onCreate()中使用AsyncTask解析数据并将数据插入数据库一次。一旦数据可用,通过AsyncTaskLoader将其加载到recyclervie

android - 如果这是主线程崩溃,如何从 UncaughtExceptionHandler 启动 Activity ?

如果检测到未处理的异常,我正在尝试启动错误报告Activity。问题是从主线程抛出的异常。如果主线程崩溃,有什么方法可以启动Activity吗? 最佳答案 我见过的用于在UncaughtExcpetionHandler中捕获错误的方法就是将崩溃数据写入文件,然后根据崩溃数据文件的存在,在应用重启时启动错误处理Activity。根据您希望Activity执行的操作,这可能适合您。 关于android-如果这是主线程崩溃,如何从UncaughtExceptionHandler启动Activi

android - 主线程上的 RxJava onCompleted 和 onTerminate

我在Android上使用RxJava和Retrofit2.0来处理网络请求。当我创建可观察对象时,我将以下内容添加到它:observable=observable.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io())然后如果我添加:observable=observable.doOnTerminate(newAction0(){@Overridepublicvoidcall(){Log.d("OBS","["+Thread.current

Android:Volley: 为什么 volley imageLoader 必须从主线程调用?

我的代码是:classMyServiceextendsService{publicvoidonCreate(){newImageLoader(mRequestQueue,newVolleyLruCache(cacheSize)).get(url,newImageListener(){..});}}我希望运行良好,但它抛出IllegalStateException异常。所以,打开volley的完整源代码,找到这个。[ImageLoader.java]publicImageContainerget(StringrequestUrl,ImageListenerimageListener,in

java - 我应该关心 Lollipop 及以后的主线程和 UI 线程之间的区别吗?

在Lollipop之前,生活很轻松。你有一个mainthread-有时也称为UIthread-所有GUI的东西都在其中完成(并且你在任何情况下都避免长时间运行操作以避免任何类型的打嗝),并且您有自己的后台线程,您正是在其中执行这些长时间运行的操作。现在在Lollipop和更高版本的Android中,IIRC术语UIthread似乎将用户指向新的RenderThread,例如用于动画的线程当主线程处理输入事件或忙于在后台为您创建新内容时,Activity之间的涟漪、英雄元素或任何其他类型的动画需要发生。在AndroidStudio1.3中,所有三种线程类型现在都有自己的注释,表示一段特定

java - 当离开主线程时,我怎样才能让一些代码尽快在主线程上运行?

我有一个部分基于网络(WebView)的用户界面。它通过JavascriptInterface连接到AndroidUI.当您点击WebView中的一个元素时,javascript调用Android并且Android在javascript/web线程上接收调用。不是UI(主)线程。它在1毫秒或更短时间内到达Android。没问题。但是,因为我现在想更改UI,所以我必须切换到UI线程。(如果您在主线程之外修改UI,Android会抛出异常)。我目前正在UI线程上使用处理程序并调用post().此代码(一个Runnable)随后会在120到300毫秒之间的任何地方被调用。这是UI从用户触摸改

java - 由于异步 Firebase 调用,主线程做了太多工作?

我的应用程序不断收到错误消息,提示I/Choreographer:跳过252帧!应用程序可能在其主线程上做了太多工作。我认为这会导致我的UI出现一些延迟,这是我不希望的。我认为这是因为当我执行Firebase查询时,当我执行onDataChange()时,它似乎总是在主UI线程中执行。我有大约5个类似于下面的Firebase查询。因此,我尝试将我的代码从onDataChange()方法移动到AsyncTask并在onPostExecute()方法上更新UI线程异步任务。但是,当我尝试这样做时,onPostExecute()方法永远不会完成。这是我的尝试:publicvoidgetPub

android - 从另一个线程更新主线程中的 ListView

我有一个单独的线程正在运行以从Internet获取数据。之后,我想通过调用adapter.notifyDataSetChanged()来更新主线程中的ListView。但它不起作用。有什么解决方法吗?谢谢。 最佳答案 使用AsyncTask(http://developer.android.com/reference/android/os/AsyncTask.html)。在onPostExecute(...)方法中调用adapter.notifyDataSetChanged()。更多详情,请阅读:http://android-dev

android - 在什么情况下我不应该使用 FragmentManager 的 executePendingTransactions()(在主线程中)?

我正在学习如何使用fragment,到目前为止我遇到过很多小问题。FragmentManager的executePendingTransactions方法看起来可能有一些自己的方法,特别是因为在官方Android文档的描述中有这个注释:Ifyouwanttoimmediatelyexecutinganysuchpendingoperations,youcancallthisfunction(onlyfromthemainthread)todoso.Notethatallcallbacksandotherrelatedbehaviorwillbedonefromwithinthiscal

android - 在主线程上改造回调

像这样的电话:@GET("/user/{id}/data")voidgetUserData(@Path("id")intid,Callbackcb);回调应该在主线程上执行(如果不使用RxJava)。我的问题是:解析发生在哪里(假设我正在使用XML转换器来处理响应)。这是主线程,还是不同的线程?它取决于转换器的实现吗?如果我必须包含一些(大量)验证规则/业务规则,我是否需要在callable中生成一个新线程?或者在回调方法中完成它是否可以?我正在寻找方法从网络服务中获取我的Activity数据,避免我自己进行线程管理(或使用其他方法,如IntentService等),但也害怕使用RxJ