当应用程序进入前台时处理本机线程

时间:2019-07-11 13:05:47

标签: multithreading android-ndk android-threading

我们已经将一些复杂的C \ C ++应用程序移植到了Android上。在Java线程的帮助下,很少有功能可以实现,而在C端使用本机线程可以实现很多其他功能。所有本机线程都是使用pthread_create()调用创建的。我们还在所有本机线程中使用许多静态变量和全局变量。我们还将Posix信号量用于线程同步。我们的应用程序在前台运行时可以按预期工作,而在将其发送到后台并随后恢复运行时遇到问题。

我想知道将应用程序发送到后台时如何处理Java线程和本机线程。从各种帖子中,我知道,后台运行的应用可以随时被Android OS杀死。现在,

  1. 我想知道Android OS是杀死整个应用程序还是只能杀死应用程序的选定几个线程? (当我们的应用运行时,它将可以使用大约10-15个线程。)
  2. 在被OS杀死时,Java线程是否与本地线程一样易受攻击?当它们属于同一个应用程序时。
  3. 比方说,仅通过向下拖动通知屏幕将应用程序发送到后台,然后在一两秒钟内将通知屏幕向上拖动,从而在一秒钟之内(非常短暂)将应用程序置于前台。在这种情况下,假设系统内存不足,并且电池电量充足,那么操作系统中的任何线程或服务都将被操作系统杀死吗?
  4. 当应用程序回到前台时,本地线程的全局变量和静态变量是否会重置为0?还是它们会保留以前的值(即将发送到后台之前保留的值)?假设线程没有被操作系统杀死。
  5. 假定没有其他应用程序在后台运行,并且通过按下主屏幕按钮仅将我们的应用程序推到了后台,然后在几秒钟(5或更短的时间)后将应用程序置于前台,是否有应用程序的任何线程可能被操作系统杀死的可能性(假设我们的应用程序是唯一正在运行的应用程序,并且在后台和电池电量中没有其他应用程序超过80%)

我浏览了以下链接,但他们并没有令人信服地回答我的所有问题。因此,发布我的问题以获得有说服力的答案。

Handling native threads during onPause()

0 个答案:

没有答案