【android – Kotlin Coroutines – 嵌套协同程序是在一个协同程序中处理不同线程的正确方法吗?】教程文章相关的互联网学习教程文章

java – 如何防止Android应用程序因后台线程中的异常而崩溃?【代码】

这是一个普遍的问题,从具体情况中提出,但我想得到一般答案如何处理以下情况: 背景: 我有一个应用程序,它正在使用一些第三方库(广告网络提供商SDK – 特别是AdMob SDK,基于Google Play服务).该库的功能对于应用程序并不重要.该库创建一个或多个后台工作线程.有时(非常罕见的情况),其中一个后台线程中存在未处理的异常,从而导致应用程序崩溃.我想忽略由此库引起的所有异常,无论其原因如何:在最坏的情况下,应用程序用户将看不到广...

java – 在Android中运行新线程和UI线程的方法是什么?【代码】

据我所知,当我们运行进程时,他们会在主线程中启动它们.当我们做一些较重的工作时,我们使用一个新线程.如果我们想修改UI外观,我们使用在UI上运行. 有人可以向我解释这些线程做了什么以及如何使用它们?解决方法:UI线程和主线程只是同一线程的不同名称. 应用程序的所有UI通胀都在此主线程上完成.我们将“更重”的工作委托给其他线程的原因是因为我们不希望这些操作减慢UI的响应性和通胀时间. 您将需要运行任何更改UI的操作或修改主线...

android – 未捕获的处理程序:由于未捕获的异常,线程主要退出【代码】

我正在使用以下方式开始新的活动Intent edit = new Intent(getParent(), WebViewLink.class); TabGroupActivity parentActivity = (TabGroupActivity) getParent(); edit.putExtra(POSITION, FAQ); parentActivity.startChildActivity("WebViewLink", edit);我收到这样的错误08-19 13:44:49.955: ERROR/AndroidRuntime(548): Uncaught handler: thread main exiting due to uncaught exception 08-19 13:44:49.974: ERROR/AndroidR...

android – 无法在未调用Looper.prepare()的线程内创建处理程序【代码】

以下例外意味着什么;我该怎么解决? 这是代码:Toast toast = Toast.makeText(mContext, "Something", Toast.LENGTH_SHORT);这是例外:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()at android.os.Handler.<init>(Handler.java:121)at android.widget.Toast.<init>(Toast.java:68)at android.widget.Toast.makeText(Toast.java:231)解决方法:你是从工作线程调用它.您需要...

java – 在Android中授予线程低优先级【代码】

如果我想要授予线程一个低优先级,那么正确的呼叫是什么?Thread t= new Thread(r); t.setPriority(Thread.MIN_PRIORITY);要么Process.setThreadPriority(Process.THREAD_PRIORITY_LOWEST);或者也许我应该两者结合?如果是,这个电话的顺序很重要吗?谢谢解决方法:t.setPriority(int)将在Thread t上设置优先级.这不能用于将Thread的优先级设置为高于接收者的ThreadGroup. Process.setThreadPriority(int,int)接受一个额外的参数,以便...

java – Android在服务类中创建新线程【代码】

我创建了一个服务类,现在我试图在这个类中运行一个新线程.服务在我的MainActivity中启动,这很有效. onCreate()部分中的第一个Toast.Message显示,但我的线程runa()中的消息没有出现.认为它应该与新的Runnable()一起使用.public class My Service extends Service {private static final String TAG = "MyService";Thread readthread;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() ...

java – ThreadPoolExecutor更多线程=更慢的android【代码】

BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();ThreadPoolExecutor ex = new ThreadPoolExecutor(1,1, 1L, TimeUnit.MINUTES, queue);final HashMap<String,Response> responses = new HashMap<String,Response>();ex.execute(new Runnable() {@Overridepublic void run() {android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_MORE_FAVORABLE);Response response = getService().getProducts...

java – Android:从另一个线程向主线程发布runnable实际上做了什么?【代码】

所以,正如标题所说:当你将另一个线程的runnable发布到主线程上时会发生什么? 我已经看到很多问题,询问你是如何做到的,以及它的基础知识是如何工作的.但是,当你在MessageQueue上放置一个runnable时,我很难找到确切的解释.肯定是它在Runnable转弯时运行.但这是什么时候? 例如:假设有一个启动ASync请求的按钮,请求返回并触发在MainThread上运行的runnable / callback.怎么了? runnable被添加到MessageQueue并在’time’时运行.但...

android – 使用RxJava在单个线程上链接请求【代码】

我将用户的位置保存在应用程序本地数据库中,然后将其发送到服务器.服务器返回成功后,我会删除已发送的位置. 每次在数据库中保存一个点时,我都会调用此方法:public void sendPoint(){amazonRetrofit.postAmazonPoints(databaseHelper.getPoints()).map(listIdsSent -> deleteDatabasePoints(listIdsSent)).doOnCompleted(() -> emitStoreChange(finalEvent)).observeOn(AndroidSchedulers.mainThread()).subscribeOn(AndroidSchedu...

java – 为什么我得到一个“无法使用android.os.CountDownTimer在没有调用Looper.prepare()的线程中创建处理程序”?【代码】

使用这个类时,我得到了这个奇怪的异常.它用于为我的游戏打印出漂亮的计时器显示,并在创建我的主GameView类时创建.错误在第26行抛出:super(s * 1000,1000);package tommedley.android.game;import android.content.Context; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.os.CountDownTimer;public class Timer extends CountDownTimer{public static int MODE_COUNTING = 0;public...

java – Android等待UI线程【代码】

出于测试目的,我需要在屏幕上获取所有可见视图的坐标.但是,在检查输出时,似乎UI线程尚未完成绘制/定位/应用设置到所有视图.一些视图是0x0像素,而它们应该是(并且它们在仿真器和物理设备上)可见.一些底部对齐的按钮位于楼梯等处. 问:我如何等待UI线程完成绘图(或者至少等待一秒钟,这应该绰绰有余),所以所有可见视图的坐标都是准确的? 我怀疑它与Threads有关,但我找不到任何确定的答案.到目前为止,我没有任何自我声明的线程. 编辑:...

android – RxJava在相同的阻塞UI线程上运行,并且不显示AlertDialog【代码】

我正在尝试使用RxJava在加载某些方法时显示AlertDialog.它不起作用,UI被阻塞2秒,当使用Debugger单步执行时,调试器显示它在UI线程上运行.我已经添加了Schedulers.IO,那么我做错了什么?boolean initialize() {try {Thread.sleep(2000);} catch (InterruptedException e) {}return true; }public AlertDialog showSomePopup(Context context, String msg) {return new AlertDialog.Builder(context).setTitle("Loading...").setMessa...

java – Android – 渲染线程内的结束活动【代码】

下午好. 我不熟悉android中的活动生命周期并尽可能地阅读,但我无法想出如何以一种很好的方式解决以下问题. 我有一个带有GLSurfaceView的活动,可以在屏幕上绘制各种内容.在这个GLSurfaceView的渲染线程中,我执行所有渲染以及实际更新逻辑(我最终会将其分离出来). 我遇到的麻烦来自渲染器中绘制的一个“屏幕”我希望结束Activity并让它调用各种生命周期方法. 通常我可以使用System.exit(0)执行此操作;但是以这种方式结束活动似乎并没...

java – Android中线程的最佳方法?【代码】

我有一个触发事件的动画.此事件会激发大量计算使用,从而破坏UI. 我需要做的是保持线程顺利运行.当事件发生时,它会将字符串传递给线程,执行计算(包括使用audioRecord类)并返回一个布尔变量. 我环顾四周,似乎AsyncTask可能是最好的解决方案,但我想看看你们中是否有任何想法?考虑到性能,这是最好的方式吗? 谢谢, 本解决方法:通常AsyncTask很好.但是如果你不需要为后台操作访问UI线程,你可以简单地使用一个新线程.new Thread(new Run...

Android线程处理程序没有收到消息【代码】

我遇到一个接收消息的线程处理程序的问题.我实现的所有其他线程这种模式工作正常.我的代码: 启动线程InternalScoresThread t = new InternalScoresThread(this.game.getApplicationContext(),this.map.fileName, this.map.getCurrentTime(),new Handler() {@Overridepublic void handleMessage(Message msg) {Log.d("DEBUG", "message received");if (msg.getData().getBoolean("record")) {Player.this.showtRecordMessage();} e...