GVKun编程网logo

CoInitialize尚未被调用 – (从无DirectXTK的库中加载gamepad.h)

8

对于想了解CoInitialize尚未被调用–的读者,本文将提供新的信息,我们将详细介绍从无DirectXTK的库中加载gamepad.h,并且为您提供关于----CoInitialize和CoUni

对于想了解CoInitialize尚未被调用 – 的读者,本文将提供新的信息,我们将详细介绍从无DirectXTK的库中加载gamepad.h,并且为您提供关于----CoInitialize 和 CoUninitialize 的调用时机问题、.IllegalStateException: User did not initialize spark context! 咋整、android – 致命异常:带有AdMob SDK的java.lang.ExceptionInInitializerError、Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery的有价值信息。

本文目录一览:

CoInitialize尚未被调用 – (从无DirectXTK的库中加载gamepad.h)

CoInitialize尚未被调用 – (从无DirectXTK的库中加载gamepad.h)

我正在使用游戏手柄类的directxtk库。 我编译的图书馆里面只有这个类,它工作。

如果我只将源文件添加到我的项目中,没有这个库,大小将是〜50KB,而不是〜500KB。 但是,我收到以下错误:

CoInitialize has not been called

任何关于如何解决这个问题的想法,所以我的可执行文件将更小?

inotify事件后无法打开/ dev / input / js文件描述符

解释USB游戏杆轴

为什么SDL不能在Linux上检测我的ibuffalo游戏控制器(PocketCHIP)?

那么你可以把CoInitialize作为main的第一件事。

int main() { CoInitialize(NULL); // your code return 0; }

----CoInitialize 和 CoUninitialize 的调用时机问题

----CoInitialize 和 CoUninitialize 的调用时机问题

参考《调用时机问题》

CoInitialize 和 CoUninitialize

最近有个东西,需要读 XML 配置文件,于是用 msxml 做了。msxml 是基于 COM 的,使用之前需要 CoInitialize,使用之后需要 CoUninitialize。于是我写成了:

void foo()
{
    CoInitialize(NULL);
// Reading con<a href="https://www.jb51.cc/tag/fig/" target="_blank">fig</a>uration

CoUninitialize();

}

刚才我正乐此不彼的把类似这样的东西改成:

void foo()
{
    CoInitialize(NULL);
    LOKI_ON_BLOCK_EXIT(CoUninitialize);
// Reading con<a href="https://www.jb51.cc/tag/fig/" target="_blank">fig</a>uration

}

我和同事的讨论

前面的同事过来看到了,说:你不该在这里调用 CoInitialize 和 CoUninitialize。如果有的地方也在用 COM,你这里 CoUninitialize 一下,别的地方就会出错了,上次的某个 Bug 就是。

我狡辩道:我假定这里没有多线程环境(实际上也是),并且约定别的地方用 COM 的时候调用 CoInitialize 时不要判断返回值。

同事:应该和大众习惯保持一致,最好就是全项目最开始的时候 CoInitialize 一次,结束的时候 CoUninitialize 一次。

我:我这里是较底层功能函数。

同事:可以以文档的方式注明,使用该模块前必须自己 CoInitialize,使用完毕后自己 CoUninitialize。

我:我只是想要用起来方便一点,用的时候不要有那么多先决条件和后置条件。再说,人家本来可以不知道我用了 COM,我这么一说明,就暴露了内部信息了不是?

其实我被动摇了。

各位大大,你们怎么处理呢?

------------------------------华丽的分割线(13:27 p.m. 增加)----------------------------------

好,既然 CoInitialize 和 CoUninitialize 有引用计数机制,那么这个具体问题已经解决。

那么,有没有类似的成对使用的 API,会对进程全局产生影响的呢?如果有,在底层要用到的时候该怎么处理?

.IllegalStateException: User did not initialize spark context! 咋整

.IllegalStateException: User did not initialize spark context! 咋整

3 INFO storage.BlockManagerMaster: BlockManagerMaster stopped
20/04/03 17:16:23 INFO scheduler.OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!
20/04/03 17:16:23 INFO spark.SparkContext: Successfully stopped SparkContext
20/04/03 17:16:23 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 13
20/04/03 17:16:23 ERROR yarn.ApplicationMaster: Uncaught exception: 
java.lang.IllegalStateException: User did not initialize spark context!
    at org.apache.spark.deploy.yarn.ApplicationMaster.runDriver(ApplicationMaster.scala:464)
    at org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:275)
    at org.apache.spark.deploy.yarn.ApplicationMasteranon$3.run(ApplicationMaster.scala:805)atorg.apache.spark.deploy.yarn.ApplicationMaster

anon$3.run(ApplicationMaster.scala:804)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
    at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:804)
    at org.apache.spark.deploy.yarn.ApplicationMaster.main(ApplicationMaster.scala)
20/04/03 17:16:23 INFO yarn.ApplicationMaster: Deleting staging directory hdfs://rongan/user/hbase/.sparkStaging/application_1585536197032_1593
20/04/03 17:16:23 INFO util.ShutdownHookManager: Shutdown hook called
20/04/03 17:16:23 INFO util.ShutdownHookManager: Deleting directory /data/yarn/nm/usercache/hbase/appcache/application_1585536197032_1593/spark-572f18e5-c65d-4c45-a3b7-22d66bff7201
 

android – 致命异常:带有AdMob SDK的java.lang.ExceptionInInitializerError

android – 致命异常:带有AdMob SDK的java.lang.ExceptionInInitializerError

@H_301_0@

Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery

Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery

如何解决Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery?

在 google play 控制台中,我看到许多只有最新设备和 Android 11 的用户都遇到了这种崩溃:

kotlin.UninitializedPropertyAccessException
de.xxx.blabla.MainActivity.getAdaptergallery

我什至没有任何称为 getAdaptergallery

的类/方法

大头痕迹是:

java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4864)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4901)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2307)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8512)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1139)
Caused by: java.lang.RuntimeException: 
  at android.app.ActivityThread.deliverResults (ActivityThread.java:5506)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4851)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4901)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2307)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8512)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1139)
Caused by: kotlin.UninitializedPropertyAccessException: 
  at de.xxx.blabla.MainActivity.getAdaptergallery (MainActivity.java:7)
  at de.xxx.blabla.MainActivity.onActivityResult (MainActivity.java)
  at android.app.Activity.dispatchActivityResult (Activity.java:8541)
  at android.app.ActivityThread.deliverResults (ActivityThread.java:5499)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4851)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4901)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2307)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8512)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1139)


EDIT:

这就是我在 onActivityResult 中的内容:

public override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
    super.onActivityResult(requestCode,resultCode,intent)

    if(requestCode == 777 && resultCode == RESULT_OK && data != null) {

        if(data.hasExtra("commentCountChanged")) {
            val json = JSONObject(data.getStringExtra("commentCountChanged")!!)

            val memeID = json.getLong("memeID")
            val commentCount = json.getInt("commentCount")

            for (i in 0 until adapterMemes.memes.size) {
                if (adapterMemes.memes[i].id == memeID) {

                    adapterMemes.memes[i].commentcount = commentCount

                    val viewHolder = recyclerViewMemes.findViewHolderForAdapterPosition(i) as RecyclerView.ViewHolder

                    if (commentCount == 0) {
                        viewHolder.itemView.memeCommentsCount.text = "\u25CF"
                        viewHolder.itemView.memeCommentsCount.setTextSize(
                            TypedValue.COMPLEX_UNIT_SP,8f
                        )
                    } else {
                        viewHolder.itemView.memeCommentsCount.text =
                            commentCount.toString()
                        viewHolder.itemView.memeCommentsCount.setTextSize(
                            TypedValue.COMPLEX_UNIT_SP,16f
                        )
                    }

                    break
                }
            }
        }

        if(data.hasExtra("list")) {
            val updatedMemes = data.getParcelableArrayListExtra<Memes>("list") as ArrayList<Memes>

            val finalMemes: MutableList<Memes> = mutablelistof()
            for(i in 0 until updatedMemes.size){
                if(updatedMemes[i].title != "show_ad_break"){
                    finalMemes.add(updatedMemes[i])
                }
            }

            adaptergallery.memes = finalMemes
            adaptergallery.notifyDataSetChanged()
        }
    }
}

解决方法

我什至没有任何称为 getAdapterGallery 的类/方法

是的,你知道。您有一个名为 adapterGallery 的 Kotlin 属性,如您在代码中所见:

            adapterGallery.memes = finalMemes
            adapterGallery.notifyDataSetChanged()

就 JVM 实现而言,Kotlin 属性由一个 Java 字段以及一个 getter 和 setter 对组成。名为 adapterGallery 的属性的 getter 是 getAdapterGallery()

因此,根据错误消息,您已将 adapterGallery 定义为 lateinit var,并且当您到达 onActivityResult() 中引用 { {1}}。例如,在以下情况下可能会发生此错误:

  • 用户导航到任何向您返回结果的活动
  • 用户离开您的应用(例如,系统主页导航、切换到另一个任务、响应通知、响应来电)
  • 当您的应用在后台运行时,Android 会终止您的进程以释放系统 RAM,因为您的用户使用的是 RAM 有限的低端手机,但也有一堆繁忙的应用
  • 用户在离开您的应用后 30 分钟内返回到它,因此 Android 将用户返回到他们上次打开的活动,以尝试保留您的应用一直存在的错觉,尽管它进程已终止
  • 用户在该 Activity 中执行某些操作以返回到调用 adapterGallery 的那个,而该进程在此过程中并不存在,而 Android 在您有机会设置 UI 之前调用了 startActivityForResult()

在现代 Android 应用架构中,onActivityResult() 不会操作任何小部件或与这些小部件紧密耦合的对象(例如 onActivityResult())。相反,RecyclerView.Adapter 会更新一些状态持有者(例如,onActivityResult()),然后使用反应式 API(例如,ViewModel)发出一些新结果(例如,视图状态) )。然后,只要您的代码观察响应式 API 仅在您的小部件准备好使用数据后才这样做,您就可以避免这种崩溃。

另一种方法是首先尝试消除 LiveData。在现代 Android 应用程序开发中,我们尝试使用很少的 Activity,将屏幕实现为片段(或可组合)。您在 onActivityResult() 中的代码表明您正在响应您的其他活动的某些结果。也许您应该用一个 Activity 替换这两个 Activity,以其他方式更新屏幕(片段、组合、切换视图可见性等)。

许多关于 Android 应用开发的书籍和课程都介绍了这些更现代的技术。关注过去三年内撰写或更新的内容。

无论您是否更新您的应用以使用现代推荐的做法,您都需要确保不要尝试操作尚未初始化的 onActivityResult()

关于CoInitialize尚未被调用 – 从无DirectXTK的库中加载gamepad.h的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于----CoInitialize 和 CoUninitialize 的调用时机问题、.IllegalStateException: User did not initialize spark context! 咋整、android – 致命异常:带有AdMob SDK的java.lang.ExceptionInInitializerError、Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery的相关信息,请在本站寻找。

本文标签: