我在一个线程中调用mRecordHelper.StartRecord(mRecordArg,myResultCode,mydata),它显示以下错误,我认为@gen.coroutine
def post(self):
input_dict = ...
result = yield executor.submit(expensive_function, input_dict)
会导致错误。
我该如何解决?谢谢!
MediaProjection.registerCallback(mMediaProjectionCallback, null)
致电代码
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:200)
at android.os.Handler.<init>(Handler.java:114)
at android.media.projection.MediaProjection.registerCallback(MediaProjection.java:80)
RecordHelper.cs
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
Toast.makeText(this, "Screen Cast Permission Denied", Toast.LENGTH_SHORT).show();
return;
}
final MPublicPar.RecordArg mRecordArg =new MPublicPar().new RecordArg(mContext);
final int myResultCode=resultCode;
final Intent mydata=data;
new Thread(new Runnable() {
public void run() {
mRecordHelper.StartRecord(mRecordArg,myResultCode,mydata);
}
}).start();
}
答案 0 :(得分:1)
或者:
在主应用程序主题上调用registerCallback()
,或
提供Handler
作为registerCallback()
的第二个参数,或(可能)
在registerCallback()
HandlerThread
(在这种情况下,我从未尝试过第三种方法,更喜欢使用其他替代方案之一,但我认为它会起作用)