小编Jat*_*ani的帖子

使用 JNI 的 AttachCurrentThread 方法在已附加到 JVM 的线程上执行 pthread_join 是否安全

当我们使用 AttachCurrentThread (JavaVM *vm, void **p_env, void *thr_args) 方法将 Cpp 线程附加到 Java 本机接口 (JNI) 时,从 Java 虚拟机的角度来看,C++ 线程实际上变成了外部线程( JVM)。

将本机 Cpp 线程附加到 JVM 后,如果我在附加线程上执行 pthread_join,或者附加线程在从 JVM 分离之前突然终止,是否会出现问题?

我的理解是,当使用 AttachCurrentThread 将本机线程附加到 JVM 时,JVM 会分配某些资源并维护内部数据结构来管理线程与 Java 对象的交互。如果线程在没有正确分离的情况下突然终止,这些资源可能无法释放,并可能导致内存泄漏或其他资源或 JVM 相关问题。

在此输入图像描述

在上面的代码中,DeattachCurrentThread 变得无法访问,并且我已经执行了 pthread_exit (),这会导致与内存泄漏或任何其他问题相关的问题吗?

c++ java java-native-interface multithreading pthreads

7
推荐指数
1
解决办法
91
查看次数

windowSoftInputMode="adjustResize" 在相对布局中绝对定位的情况下似乎不起作用

我的 Android 屏幕下部有一个 EditText,如图所示。由于一些项目限制,我应该只使用绝对定位。

单击 EditText 时,软键盘会隐藏 EditText,如另一幅图像所示。

在此输入图像描述 在此输入图像描述

我尝试将 android:windowSoftInputMode="adjustResize" 放入清单文件中(也尝试过 adjustmentPan)它仅适用于相对定位(下面注释了 textField_layoutparams 代码),但似乎不适用于绝对定位。

甚至尝试放置 ScrollView (下面的注释代码),但它不起作用。

代码:

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

        val scrollView: ScrollView
        val relativeLayout: RelativeLayout
        val textField: EditText

    /*scrollView = ScrollView (this)
    scrollView.layoutParams = RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.MATCH_PARENT,
        RelativeLayout.LayoutParams.MATCH_PARENT
    )*/
    //scrollView.isFillViewport = true

    //setContentView(scrollView)

    relativeLayout = RelativeLayout(this)
    relativeLayout.layoutParams = RelativeLayout.LayoutParams (
        RelativeLayout.LayoutParams.MATCH_PARENT,
        RelativeLayout.LayoutParams.MATCH_PARENT
    )
    relativeLayout.setBackgroundColor(Color.parseColor("#0000FF"))

    //scrollView.addView(relativeLayout)
    setContentView (relativeLayout)

    textField = EditText(this)

    val textField_layoutparams: LayoutParams
    textField_layoutparams = RelativeLayout.LayoutParams …
Run Code Online (Sandbox Code Playgroud)

java android kotlin android-relativelayout

5
推荐指数
1
解决办法
40
查看次数

kotlin 中由于闭包导致内存泄漏?

我对 Kotlin 中的内存管理有基本的了解,即局部变量存储在堆栈中并由操作系统管理,对象在堆上创建并由 JVM 管理它们。此外,对象作为引用的副本传递,原始类型作为函数中的副本传递。

在下面的代码中,我创建了一个 TextEditOperation 函数,该函数以编程方式创建 EditText 并使用指令对象设置其属性,并向其添加 TextWatcher,最后将 edittext 视图添加到父相对布局。

public fun TextEditOperation (pInstructionSetIndex: Int, pInstructionIndex: Int): View? 
{
    val instruction: InstructionKernelAndroid
    val context: Context?
    val activity: Activity
    val textedit: EditText
    val parent_view: RelativeLayout

    // fetch the instruction
    instruction = InstructionSetMgr.uAndroidOSInstructionSetList[pInstructionSetIndex][pInstructionIndex]

    // get activity's Context
    context = ProcessStates.GetMainActivityContext ()

    // cast activity's context to activity to use it's method
    activity = context as Activity

    // get parent view
    parent_view = activity.findViewById (instruction.GetParentID ()) as RelativeLayout

    // create …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks memory-management textwatcher kotlin

5
推荐指数
1
解决办法
172
查看次数