我找不到答案的真正基本问题。Xcode中的色彩是什么?为什么所有视图的默认色彩都为蓝色?有什么影响?我注意到这些视图中的某些图像的颜色看起来不太正确,除非我将色调设置为白色,而且由于我不了解它的作用,不得不将每个新视图的色调都设置为白色实在很烦人。
我已经设定
<item name="android:spinnerMode">dialog</item>
Run Code Online (Sandbox Code Playgroud)
所以当我点击微调器时,我会弹出一个弹出窗口.但是那个弹出窗口是带有白色文本的灰色,我似乎无法改变任何颜色.如何设置此对话框的样式?
我尝试了以下一些疯狂的临时颜色,看看有什么变化,但没有任何变化.
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:dialogTheme">@style/SpinnerDialog</item>
<item name="android:alertDialogTheme">@style/SpinnerAlertDialog</item>
</style>
<style name="SpinnerDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="android:popupBackground">#ff00ff</item>
<item name="colorPrimary">#ff00ff</item>
<item name="colorPrimaryDark">#ffff00</item>
<item name="colorAccent">#ff0000</item>
</style>
<style name="SpinnerAlertDialog" parent="Theme.AppCompat.Dialog">
<item name="colorPrimary">#00ffff</item>
<item name="colorPrimaryDark">#00ff00</item>
<item name="colorAccent">#0000ff</item>
</style>
Run Code Online (Sandbox Code Playgroud)
有一堆类似的问题,但它们都处理下拉列表或古老版本的Android或只是不工作.
我在 Android Studio 中创建了一个 Flutter 项目,然后将它上传或推送到 git 存储库存储桶中。然后,当我尝试在另一台计算机上的 Android Studio 中“从版本控制检出项目”时,我得到以下信息:
您想为您签出的源创建一个 Android Studio 项目...(项目所在的文件夹)?
为什么要问我这个?我想将第一台计算机上的相同项目下载到第二台计算机。我不想创建一个新项目,我想检查该项目并让它正常工作。
鉴于如此多的程序员正在使用 git 而不是仅仅压缩项目并在另一台计算机上解压缩它,我认为它不应该是无用的,而且我做错了什么。我最好的猜测是,由于 .gitignore 文件,并不是所有需要的东西都在 git 上,所以这里是它的内容:
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# Visual Studio Code related
.vscode/
# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
/build/
# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/ …Run Code Online (Sandbox Code Playgroud) 我以为我做得很对.
let realm = try! Realm()
do {
try realm.write {
realm.add(myObject)
}
} catch {
print("something went wrong!")
}
Run Code Online (Sandbox Code Playgroud)
但是我仍然在崩溃而不是那个打印声明.我对避免异常并不感兴趣(在这种情况下,我通过添加一个带有现有主键的对象故意引起它)但我希望能够捕获它并防止崩溃,无论如何.这是可能的,如果是的话,怎么样?
Android 文档中表示singleInstance不建议将 Activity 的 launchMode 设置为。我不明白他们的解释:
\n\n\n其他模式 \xe2\x80\x94 singleTask 和 singleInstance \xe2\x80\x94 不适合大多数应用程序,因为它们导致用户可能不熟悉并且与大多数其他应用程序有很大不同的交互模型。
\n
我的问题是:对于大多数应用程序来说,在多个实例中启动一个活动是否合适?为什么这是默认行为?
\n\n我花了一个小时想知道为什么我的活动会减慢我的手机速度,然后我发现它的多个实例是通过单击通知图标创建的。解决此问题的一个简单方法是将活动设置为singleInstance而不是singleTop,但不建议这样做,而且我不明白为什么(因此不明白我是否可以忽略该建议)。
在我的Android Vitas中,我有30%的用户体验缓慢的渲染。我的应用程序的UI非常复杂,因此我做了一个非常基础的项目来尝试解决此问题。但是事实证明,即使使用最简单的布局,它也相当慢。
布局是Android Studio提供作为模板的居中文本:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="slowrenderingtest.pichaipls.com.slowrenderingtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/timerView"
android:text="00:00"
android:textSize="40dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
使用布局的活动每秒更改一次文本(因为这是一个计时器):
Timer updateTicks = new Timer();
updateTicks.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Random r = new Random();
timerView.setText(String.format("%02d", r.nextInt(60))+":"+
String.format("%02d", r.nextInt(60)));
}
});
}
}, 100, 1000);
Run Code Online (Sandbox Code Playgroud)
当我打开GPU配置文件时,这已经接近16ms的极限,以便在一些较慢的设备(显然是30%的用户)上绘制每一帧。只有一个TextView。但是这里有个要点:当我第一次运行该活动时,渲染时间很短,但是几秒钟后它们就会急剧增加。如果我不断触摸屏幕(屏幕上没有控件),则渲染时间仍然很短。我猜这是由于CPU / GPU处于低功耗状态(因此渲染需要更长的时间)。
我的问题是Android要点。我一直看到有关渲染时间过慢的警告(我认为遇到缓慢渲染的会话中超过5%的任何内容都会收到警告),但我不知道如何加快渲染速度。我担心这可能会影响我的应用排名,但即使使用这个非常简单的示例,仍然有太多Android用户的设备运行缓慢。
对此可以采取任何措施吗?
AdMob for Android 造成了我所有应用中超过 90% 的崩溃和 ANR。多年前,所有这些崩溃都已报告给 AdMob,尽管采取了所有解决方法和更新,但崩溃仍然不断出现。有时会修复一次崩溃,但会替换为 ANR。有时一切正常,然后有一天我会遇到数百次崩溃。
我确信 AdMob 团队无法解决所有问题是有原因的,但是我的应用程序是否有一种聪明的方法来捕获由 AdMob 插件引起的所有崩溃?
一个例子:
Fatal Exception: java.util.concurrent.TimeoutException: com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize() timed out after 10 seconds
at com.google.android.gms.ads.internal.webview.j.k(j.java:3)
at com.google.android.gms.ads.internal.webview.v.destroy(v.java:4)
at com.google.android.gms.ads.internal.webview.t.destroy(t.java:10)
at com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize(b.java:2)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:217)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:200)
at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)
还有一个:
Caused by java.lang.IllegalStateException: Only fullscreen activities can request orientation
at android.os.Parcel.readException(Parcel.java:1975)
at android.os.Parcel.readException(Parcel.java:1913)
at android.app.IActivityManager$Stub$Proxy.setRequestedOrientation(IActivityManager.java:6186)
at android.app.Activity.setRequestedOrientation(Activity.java:5840)
at com.google.android.gms.ads.internal.overlay.zzd.close(zzd.java:146)
at com.google.android.gms.ads.internal.overlay.zzd.zznh(zzd.java:166)
at com.google.android.gms.ads.internal.overlay.zzd.close(zzd.java:61)
at com.google.android.gms.ads.internal.overlay.client.c.a(c.java:33)
at og.onTransact(og.java:4)
at android.os.Binder.transact(Binder.java:612)
at com.google.android.gms.internal.ads.zzej.transactAndReadExceptionReturnVoid(zzej.java:7)
at com.google.android.gms.internal.ads.zzaar.onCreate(zzaar.java:8)
at com.google.android.gms.ads.AdActivity.onCreate(AdActivity.java:29)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910) …Run Code Online (Sandbox Code Playgroud) 是的,这个问题有两个常见的答案:
一:billingHelper.flagEndAsync();在开始异步操作之前调用一个hack .这通常被认为是不推荐的,并且在许多情况下不能解决问题.
二:handleActivityResult在Activity中调用IabHelper的方法onActivityResult.这个解决方案的问题(除了我不理解这个方法的目的)是在我的应用程序中,应用程序内的计费操作在应用程序的Application类中完成,因为应用程序中有一堆活动,用户可能会触发应用内购买以及应用需要查询应用内购买广告资源的多个可能的入口点.所以我试着把:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!MyApplication.myAppInstance.mHelper.handleActivityResult(requestCode, resultCode, data))
super.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
进入用户可能开始购买的每个活动,但这并没有解决崩溃问题.我真的不明白这个onActivityResult的目的,所以我可能误解了它应该如何实现.为什么Google要强迫我从活动中进行应用内结算操作?
所以我有一个设置屏幕,ListView我希望用户能够点击整个列表行来更改该设置。但是,我似乎找不到一种非疯狂的方法来扩展 的子项GestureDetector以填充整个水平空间。
我的列表视图:
ListView(
children: [
GestureDetector(
onTap: () {
print('tapped the row');
},
child: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Totals expressed in', style: TextStyle(fontSize: 16.0)),
Text('Percentages', style: TextStyle(color: Colors.black54, fontSize: 15.0)),
],
),
),
),
Divider(height: 1.0),
// followed by other elements in the list view
Run Code Online (Sandbox Code Playgroud)
这将检测点击,但仅检测文本元素水平占据的空间(屏幕宽度的一小部分)。我知道这个Expanded小部件,但是无论我尝试放置它,我都会收到一个错误,它要么必须是 orRow或Column异常的后代:
RenderFlex 子级具有非零弯曲,但传入的高度约束是无界的。