我在棒棒糖上得到了这个奇怪的崩溃报告.我的应用程序基本上是一个浏览器,所以它大量使用WebView,但我不知道问题发生在那里.无论如何,崩溃报告没有提供太多有用的信息,它基本上就是我在下面粘贴的内容:
java.util.concurrent.TimeoutException: android.view.ThreadedRenderer.finalize() timed out after 10 seconds
at android.view.ThreadedRenderer.nDeleteProxy(Native Method)
at android.view.ThreadedRenderer.finalize(ThreadedRenderer.java:398)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:190)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173)
at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)
有没有人见过这个?什么可能导致它?
编辑:我应该提到这是在我已经有大约10个月的应用程序上发生的,并且它始终只针对4.0+设备.该错误仅在5.0设备上报告,并且上面的堆栈跟踪是Play Store控制台给我的全部内容.
有没有办法获取像这样的YouTube直播流的HLS URL https://www.youtube.com/embed/WVZpCdHq3Qg
我尝试了典型的get_video_info方法以及付费服务(http://ytapi.gitnol.com/),但它们似乎不适用于实时流.
youtube youtube-api http-live-streaming youtube-data-api youtube-livestreaming-api
我有一个应用程序,它大量使用webview.我的要求是能够查看html并将javascript注入正在加载的页面,甚至是iframe.我用android附带的webview完成了这个,但它的效果并不好.
那么还有其他项目可以提供相同的html5浏览体验,但是对开发人员更友好吗?是否有可能采用开源Web视图代码并构建我自己的代码或者这只是一个疯狂的想法?
谢谢.
我注意到我的一些用户正在获得此异常.我不知道如何重现它,我只有关于Crashlytics的报告.似乎深入Google的代码.在使用此代码的数千人中,只有39人有例外.
知道什么可能是错的吗?
Fatal Exception: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.lang.Iterable.iterator()' on a null object reference
at android.app.ApplicationPackageManager.getUserIfProfile(ApplicationPackageManager.java:2141)
at android.app.ApplicationPackageManager.getUserBadgeForDensity(ApplicationPackageManager.java:997)
at android.app.Notification$Builder.getProfileBadgeDrawable(Notification.java:2877)
at android.app.Notification$Builder.hasThreeLines(Notification.java:3092)
at android.app.Notification$Builder.build(Notification.java:3646)
at android.support.v4.app.NotificationCompatApi21$Builder.build(NotificationCompatApi21.java:136)
at android.support.v7.app.NotificationCompat$LollipopExtender.build(NotificationCompat.java:504)
at android.support.v4.app.NotificationCompat$NotificationCompatImplApi21.build(NotificationCompat.java:835)
at android.support.v4.app.NotificationCompat$Builder.build(NotificationCompat.java:1752)
at mycode.startNotification(mycode.java:361)
Run Code Online (Sandbox Code Playgroud)
谢谢.
关于github上的这个错误报告https://github.com/googlesamples/android-play-billing/issues/2#issuecomment-305380836我们被要求在这里提出这个问题.
问题很简单.用户手机上有2个或更多账号,比如xyz@gmail.com和abc@gmail.com.他们安装了一个帐户为xyz@gmail.com的应用程序.他们购买了一些IAP项目.该应用程序更新,现在该应用程序在abc@gmail.com下,用户已经失去了购买.使用分阶段发布时会发生很多这种情况.
主要问题是,作为开发人员,我们不允许用户选择要购买哪个帐户或使用哪个帐户来检查购买.
第二个问题,Android上的Play商店应用会忽略在汉堡菜单上选择的用户帐户.唯一的解决方法是使用此解决方法https://github.com/googlesamples/android-play-billing/issues/2#issuecomment-259108286上描述的Play商店网站上的相同错误报告.
我不知道理想的解决方案是什么,我所知道的是,对于每次更新后都会导致大量一星评价的开发人员来说,这是一个巨大的麻烦.
编辑:正如评论所指出的那样,当我提到多个帐户时,我说的是针对单个Android用户的多个Google帐户,我不是在谈论同一部手机中的多个Android用户.
in-app-purchase in-app-billing google-play google-play-services
我开始在我的应用程序上实现暗模式,我正在使用Theme.AppCompat.DayNight.NoActionBar. 设备上一切正常,但我想查看 Android Studio 上的差异,因此我不必继续运行代码来查看更改。
如何切换 Android Studio Preview 以显示夜间模式与灯光模式主题?
谢谢。
编辑:为了清楚起见,我想在预览中显示资源文件夹-night而不是普通资源文件夹中的任何内容。
android android-theme android-studio material-design android-darkmode
我对RxJava很新,所以这可能是一个愚蠢的问题.我将描述我的情景.
我在UI线程上运行了一些代码,它们将更新一些图像,但这些图像不是很重要,它们在生成它们时消耗了一些资源,所以我想在单个线程上生成它们(当然不是UI线程)和逐个生成它们.我猜蹦床调度程序是我想要的,但我的问题是,如果我使用它然后它在UI线程上工作,我希望它在另一个线程上做.
显然我可以编写自己的线程,我可以在其中对项目进行排队,然后逐个处理这些,但我想RxJava可能会有一个简单的解决方案吗?
我当前的代码如下所示:
Observable<Bitmap> getImage = Observable.create(new Observable.OnSubscribe<Bitmap>() {
@Override public void call(Subscriber<? super Bitmap> subscriber) {
Log.w(TAG,"On ui thread? "+ UIUtils.isRunningOnUIThread());
subscriber.onNext(doComplexTaskToGetImage());
subscriber.onCompleted();
}
});
getImage.subscribeOn(Schedulers.trampoline()).subscribe(new Action1<Bitmap>() {
@Override public void call(Bitmap bitmap) {
codeToSetTheBitmap(bitmap);
}
});
Run Code Online (Sandbox Code Playgroud)
我的日志上写着"On ui thread?" 永远都是如此.那么我如何使代码和所有后续尝试做同样的事情按顺序在单个线程(而不是ui线程)上运行而不编写一堆代码来排队工作?
编辑:
我相信现在可以使用Schedulers.single()或者如果你想要你自己可以使用它new SingleScheduler().我还在测试,但是当我发布这个帖子时,我认为它确实符合我的要求.
典型情况下,用户在其Android设备上有两个帐户xyz@gmail.com和abc@gmail.com.用户使用帐户xyz@gmail.com在版本1.0上购买我的高级升级,然后他们更新到版本1.1并且代码(应用内购买代码)现在认为他们使用的是帐户abc@gmail.com,因此它认为用户尚未购买高级升级.我知道它使用了错误的帐户,因为他们向我发送了他们的订单电子邮件,然后他们告诉我,如果他们按下$ amount,那么在购买对话框中列出了错误的电子邮件.此时唯一的解决方法是使用Play商店桌面网站和正确的帐户卸载并重新安装.
我正在使用来自示例的IABHelper以及StackOverflow的一些修复.据我所知,我甚至无法选择他们正在使用的帐户.
关于可能发生的事情的任何想法?这有发生在其他人身上吗?
代码超出了StackOverflow的长度限制,所以我把它放在http://pastebin.com/hLquZ6SP
编辑:我现在有一个用户声称每次更新应用程序时都会发生这种情况.
编辑:这在分阶段推出期间发生了很多,我认为因为获得分阶段更新的帐户不是用户购买IAP的帐户.
android in-app-purchase in-app-billing google-play google-play-services
我已按照这些非常简单的说明https://developers.google.com/+/mobile/android/recommend在我的应用上实施了+1按钮.我将我的app url作为url传递,0作为PLUS_ONE_REQUEST_CODE传递.我认为+1部分正在工作,虽然我不确定,但共享部分是奇怪的.基本上,如果我没有键入任何内容,它会分享我输入的内容或什么都没有,但它不共享URL.看起来有点无用!其他人有这个问题吗?
谢谢.
编辑:代码
在创建时:
plusOneButton = (PlusOneButton) findViewById(R.id.plus_one_button);
Run Code Online (Sandbox Code Playgroud)
在简历上:
plusOneButton.initialize(myapplink, 0);
Run Code Online (Sandbox Code Playgroud)
按钮:
<com.google.android.gms.plus.PlusOneButton xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus"
android:id="@+id/plus_one_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
plus:size="standard"
plus:annotation="inline" />
Run Code Online (Sandbox Code Playgroud)
编辑:我还应该指出,我在另一个应用程序(不是我的)使用相同的按钮尝试这个,它有同样的问题.所以也许这是默认行为,但似乎它是无用的行为.
我以这种方式运行它"菜单 - >分析 - >按名称运行检查 - >未使用的资源",我选择整个项目,但它没有在我的主应用程序模块之外找到任何未使用的资源.所以我然后为单个模块运行它,它找到了东西,但它也找到了在其他模块上使用的项目.
例如,我有一个共享模块,其中包含一些常见字符串,如对话框的"关闭".字符串未在该模块中使用.当我为该模块运行检查时,它发现它未使用.
另一方面,我在同一个共享模块上有一些字符串,我不再在任何地方使用它,当我运行整个项目的检查时,它将找不到该字符串.
我认为问题可能是我共享模块的方式,基本上它们在不同的目录上我导入它们将它放在settings.gradle上:
include ':androidutils'
project(':androidutils').projectDir = new File( '../sharedlibs/androidutils')
Run Code Online (Sandbox Code Playgroud)
然后在我的build.gradle中,我只是:androidutils作为依赖项导入.
其他人有这个问题吗?
谢谢.
android ×8
google-play ×2
android-lint ×1
google-plus ×1
java ×1
lint ×1
rx-android ×1
rx-java ×1
youtube ×1
youtube-api ×1