在我的Android应用程序中,我需要将标记放在地图上的确切位置.我用51.507351,-0.127758(伦敦)位置在地图上标记了一个标记.我使用以下代码来完成工作.
googleMap.addMarker(new MarkerOptions().position(
new LatLng(51.507351, -0.127758)).icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.q_icon))));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(51.507351, -0.127758), 20));
Run Code Online (Sandbox Code Playgroud)
这是我的标记可绘图像:
现在我的问题是,"Q"符号位于51.507351,-0.127758的位置.我需要将标记放在底部箭头开始的位置.
请查看图片,以便了解我的问题.
我怎样才能做到这一点?请帮我.
我正在尝试使用Python,Redis和PostgreSQL来放置需要访问数据库的作业.我正在做以下事情:
使用RQ将作业放入Redis队列:
def queue_data(self, json_data):
Queue().enqueue(process_data, json.dumps(json_data))
Run Code Online (Sandbox Code Playgroud)在process_data,使用psycopg2在PostgreSQL数据库上执行查询:
def process_data(json_data):
with psycopg2.connect("dbname=pgtest2db user=pgtest2user") as conn:
with conn.cursor() as cursor:
# I'm not actually doing this query, but you get the idea
cursor.execute("SELECT * FROM some_table")
conn.close()
Run Code Online (Sandbox Code Playgroud)显然,这远非最优,因为每次调用process_data都会创建一个新连接.实现这一目标的最佳做法是什么?谁应该负责管理数据库连接池?
请注意,我强迫自己不要使用ORM,因为我这样做是为了教自己,我想从更纯粹的角度理解这些模式.
我最终使用了像这样的自定义工作者:
import os
import node
import redis
from rq import Worker, Queue, Connection
from psycopg2.pool import ThreadedConnectionPool
listen = ['high', 'default', 'low']
redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')
redis_conn = redis.from_url(redis_url)
pool = ThreadedConnectionPool(minconn = 1, maxconn …Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式设置AppBarLayout的主要颜色.XML布局是AndroidStudio的Scrolling示例:
<android.support.design.widget.AppBarLayout android:id="@+id/app_bar"
android:fitsSystemWindows="true" android:layout_height="@dimen/app_bar_height"
android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout"
android:fitsSystemWindows="true" android:layout_width="match_parent"
android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:contentScrim="?attr/colorPrimary">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize" android:layout_width="match_parent"
app:layout_collapseMode="pin" app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
在活动中,我希望AppBarLayout中的所有项目都有黄色背景,所以我设置:
int barColor = Color.parseColor("#FFC107");
AppBarLayout barLayout = (AppBarLayout) this.findViewById(R.id.app_bar);
if (barLayout != null) {
barLayout.setBackgroundColor(barColor);
}
toolbar.setBackgroundColor(barColor);
CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) this.findViewById(R.id.toolbar_layout);
if (collapsingToolbarLayout != null) {
collapsingToolbarLayout.setBackgroundColor(barColor);
collapsingToolbarLayout.setContentScrimColor(barColor);
}
Run Code Online (Sandbox Code Playgroud)
一切正常,除非我在滚动工具栏的中途(在FAB消失的确切位置).在该状态下,工具栏的颜色仍然是默认的主要颜色(蓝色,而不是黄色),如下图所示:
那么,有两个问题:
我在使用时正在处理解雇/州洛斯地狱DialogFragment.为了避免无效的解雇,我正在覆盖该dismiss方法:
@Override
public void dismiss() {
if (this.isVisible()) {
super.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,isVisible()在false即使对话框,其实是可见的.这就是该isVisible()方法在其文档中所说的内容:
如果片段当前对用户可见,则返回true.这意味着:(1)已添加,(2)其视图附加到窗口,(3)未隐藏.
所以,如果我将方法更改为:
@Override
public void dismiss() {
// This is almost the same as isVisible(), but the latter doesn't
// work
if (this.isAdded() && !this.isDetached() && !this.isHidden()) {
super.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
然后它完美地运作.这是预期的行为吗?
在使用Ion的HTTP请求之后执行所有操作:
DialogFragment dialog = DialogFragment.newInstance(..., ...);
Ion.with(context, url)
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
dialog.dismiss()
}
});
dialog.show(getFragmentManager(), …Run Code Online (Sandbox Code Playgroud) 我们的SyncAdapter实现与Android 4.4.4版不同步.适用于较低的API设备.
我们的应用程序使用AbstractThreadedSyncAdapter与服务器进行通信.我已经使用许多不同的设备和模型对其进行了测试,从API级别10开始运行android.我们最近购买了两台基于Android 4.4.4的设备(Moto E,Nexus 5),并开始遇到SyncAdapter问题.这是xml配置:
<sync-adapter
xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="our.provider"
android:accountType="our.authenticator"
android:userVisible="false"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
android:supportsUploading="true" />
Run Code Online (Sandbox Code Playgroud)
即使我放了手动和加急标志,同步也不会触发:
Bundle bundle = new Bundle();
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
ContentResolver.requestSync(SyncAdapter.dummyAccount(context), SYNC_PROVIDER, bundle);
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过WiFi和连接电源线来解除任何与电源使用相关的优化问题.目标SDK设置为最新版本:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="20" />
Run Code Online (Sandbox Code Playgroud)
我拥有所有必要的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
Run Code Online (Sandbox Code Playgroud)
有一件事让我感到不同寻常.设备报告API级别= 19,但SDK说API 19等同于android 4.4.2,而不是android 4.4.4:

这可能与这个问题有关吗?
很抱歉没有更多的帮助或描述,但我真的没有关于如何继续调试此问题的线索.提前致谢.
进一步思考:
似乎与同步失败时使用的指数退避算法有关.在开始新请求并使用手动同步(忽略退避)之前,我最终取消了请求.我知道这不太理想,但在我的用例中,用户希望数据能够立即同步.确保给SyncManager一个:https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/content/SyncManager.java
卸载应用程序并再次运行它可以解决问题,因此可能与帐户的权限有关.请注意,我确实从清单中删除了一些未使用的服务,但没有任何与SyncAdapter或其关联类相关的服务.
我想用cURL测试某些密码的用法,但它似乎不尊重该--ciphers选项:
curl -vvv --tlsv1.0 --ciphers 'RC4-SHA' https://my.url.com/alive
* Hostname was NOT found in DNS cache
* Trying ip...
* Connected to my.url.com (ip) port 443 (#0)
* TLS 1.0 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
* Server certificate: *.url.com
* Server certificate: DigiCert SHA2 Secure Server CA
* Server certificate: DigiCert Global Root CA
> GET /alive HTTP/1.1
> User-Agent: curl/7.37.1
> Host: my.url.com
> Accept: */*
>
< HTTP/1.1 200 OK
* Server nginx/1.4.6 (Ubuntu) is not blacklisted
< Server: …Run Code Online (Sandbox Code Playgroud) android ×4
android-maps ×1
curl ×1
nginx ×1
postgresql ×1
psycopg2 ×1
python ×1
redis ×1
ssl ×1
starttls ×1