当我取消发布应用程序时,会发生什么?
我有一个应用程序,它依赖于第三方数据,现在已停止工作.快速回顾后,我意识到,这个更新将花费我几周时间.为了避免不良评级(我今天开始收到),我想暂时取消发布我的应用程序,例如3-4周,然后重新发布它.我不想更改包名或其他任何内容,只需取消发布,并在几周后重新发布,所以我会保留我的评论和评级.
1)当我取消发布应用程序时,用户可以通过市场搜索找到我的应用程序吗?
2)当我取消发布应用程序时,用户是否可以通过单击您的开发者个人资料找到我的应用程序?
3)当我取消发布应用程序时,我可以稍后发布具有相同包名称的相同应用程序,同时保留我的旧评级和评论吗?
我将日期存储String
在我的数据库中,格式如下:
YYYY-MM-DD HH:MM:SS
Run Code Online (Sandbox Code Playgroud)
这是受支持的格式之一(http://www.sqlite.org/lang_datefunc.html).现在我想将这些存储的日期(好吧,字符串)与另一个日期进行比较.我的日期存储在列中column_date
,所以我正在尝试这样做:
SELECT * FROM MyTable
WHERE
(Date(column_date) >= Date (2000-01-01) AND Datetime(column_date) <= Datetime (2050-01-01))
Run Code Online (Sandbox Code Playgroud)
当我阅读文档时,The date and time functions use a subset of IS0-8601 date and time formats. The date() function returns the date in this format: YYYY-MM-DD.
我想,我做得对 - 我从存储的字符串创建日期并将其与从其他字符串创建的日期进行比较.
但它不起作用,即使column_date
是从今年开始的日期,并且你可以看到开始和结束日期是非常仁慈的.也试过这个(使用日期时间而不是日期):
SELECT * FROM MyTable
WHERE
(datetime(column_date) >= Date (2000-01-01) AND datetime(column_date) <= Datetime (2050-01-01))
Run Code Online (Sandbox Code Playgroud)
和这个(使用之间而不是<=和> =)
SELECT * FROM MyTable
WHERE
(Date(column_date) between Date (2000-01-01) …
Run Code Online (Sandbox Code Playgroud) 我有android数据库和游标的奇怪问题.不时(非常罕见)发生,我收到客户的崩溃报告.很难找到崩溃的原因,因为我有大约150,000个活跃用户,每周大约有1个报告,所以这真的是一个小错误.这是例外:
STACK_TRACE=java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed.
at android.database.sqlite.SQLiteConnectionPool.throwIfClosedLocked(SQLiteConnectionPool.java:962)
at android.database.sqlite.SQLiteConnectionPool.waitForConnection(SQLiteConnectionPool.java:599)
at android.database.sqlite.SQLiteConnectionPool.acquireConnection(SQLiteConnectionPool.java:348)
at android.database.sqlite.SQLiteSession.acquireConnection(SQLiteSession.java:894)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:834)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:144)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)
at sk.mildev84.agendareminder.a.c.a(SourceFile:169)
Run Code Online (Sandbox Code Playgroud)
在每个游标"迭代和探索"之前,我使用此代码确保一切正常:
db = instance.getWritableDatabase();
cursor = db.rawQuery(selectQuery, null);
if (isCursorEmptyOrNotPrepared(cursor)) {
...
}
private synchronized boolean isCursorEmptyOrNotPrepared(Cursor cursor) {
if (cursor == null)
return true;
if (cursor.isClosed())
return true;
if (cursor.getCount() == 0) // HERE IT CRASHES
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
它符合一致:
if (cursor.getCount() == 0)
Run Code Online (Sandbox Code Playgroud)
谁知道为什么?我想,我正在检查所有可能的例外情况和条件......为什么我的应用程序崩溃了?
PS:所有数据库方法都是同步的,我在所有情况下都正确地打开和关闭数据库/游标,我多次检查它.
我对android sqlite数据库和并发写入存在严重问题.为了更好的解释,我会给你一个真实的例子:
我有一个桌面小部件,我正在显示我的数据库中的项目列表(在后台我有DataService,它定期从我的远程服务器收集新数据,并用它们更新我的数据库).所以 - 当我点击列表中的某个项目时,我需要更新数据库中的点击项目(=写入操作).但是,当我完全点击项目时,当DataService正在更新我的数据库中的新数据时,它当然会记录如下错误:
android.database.sqlite.SQLiteException: error code 5: database is locked
Run Code Online (Sandbox Code Playgroud)
通常很难模拟,但如果你安排DataService每10秒运行一次(仅用于演示),你可以很容易地模拟这个错误.
我的问题是,如何处理这个?我在文档中读到,如果同时有两个写入事件,则只会执行第一个,第二个将被记录为错误.它听起来很奇怪,必须有另一个选项,例如第二次写入会等到第一次写完.或者其他解决方案?试图阅读文档,但似乎,这个项目在谷歌文档中不是很好...几乎我拥有的每一个信息,我在官方网页以外找到.
PS:这是我的DBHelper类的缩短版本:
public class DBHelper extends SQLiteOpenHelper {
private static final String TABLE_NEWS = "News";
private static final String COL_ID = "id";
private static final String COL_TITLE = "title";
private static final String COL_ALERT = "alert";
public DBHelper(Context context) {
super(context, "MY_DB_NAME", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NEWS + "(" + COL_ID + " TEXT PRIMARY KEY," + COL_TITLE …
Run Code Online (Sandbox Code Playgroud) 标题已经说明了一切,这很奇怪。这是我的代码:
FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(ctx);
analytics.setUserProperty(MY_PROP, "test");
Run Code Online (Sandbox Code Playgroud)
这几乎就是全部了。我可以在 Android studio 日志记录和发送中清楚地看到这一点,还在 Firebase 控制台的 DebugView 部分中接收它们 - 但即使在 4 天后,它们仍然没有显示在用户属性中。
为什么?
我正在编写一个闹钟应用程序,我想知道会发生什么,当我用AlarmManager设置一些警报时,例如在凌晨2:59(这不是我的警报时间,这只是我设置一些警报的时间),在凌晨3点,从夏令时到冬天(夏令时)会有自动时间变化.我预定的闹钟怎么办?我在文档中找不到任何内容,测试起来并不容易,至少我必须更改日期并等待几个小时...我不是那么耐心;)
下一个问题 - 我也很好奇,当用户更改时区时,使用AlarmManager设置的警报会发生什么.这很幸运,很容易测试,我发现,android非常"智能"并自动重新安排闹钟.因此,当我的时区是例如9:00并且我在10:00设置闹钟,并切换实际时间为10:00的时区(+1小时)时,android按预期将我的闹钟重新安排到11:00.这很好,但是我在文档中也找不到任何东西......
有人有更多官方信息吗?谢谢
好的,我在这里非常准确地阅读了文档:http://developer.android.com/guide/topics/providers/calendar-provider.html#update-event,其编写如下:
// Here is an example of an intent that sets a new title for a specified event and lets users edit the event in the Calendar.
long eventID = 208;
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
Intent intent = new Intent(Intent.ACTION_EDIT)
.setData(uri)
.putExtra(Events.TITLE, "My New Title");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
对我来说它不起作用 - 它打开了正确的事件,但编辑它是不可能的 - 所有字段都是只读的.只有我可以更改的字段是Timezone和Reminder.其他一切都是只读的.难道我做错了什么?
我的API等级是14(ICS)
我正在准备我的一个应用程序的新版本,并且我在我的应用程序中做了如此巨大的更改,我需要在更新应用程序之后完全做一些数据转换,这绝对是第一件事(在做其他任何事情之前).我想,最好的地方就是在我的类(扩展Application)中的onCreate()方法.我测试了几次,它似乎工作正常,但后来我读了文档:
需要维护全局应用程序状态的基类.您可以通过在AndroidManifest.xml的标记中指定其名称来提供自己的实现,[b]这将导致在创建应用程序/包的进程时为您实例化该类[/ b].
看起来我是对的,但我不太确定.你能证实/反驳吗?
过去 2 天我试图使用内部应用程序共享上传我的应用程序,但无论我做什么,我都无法使其工作。这就是我所做的:
APK已成功上传,然后我复制链接并将其保存到Google Keep。
然后我尝试在手机上打开该链接,我单击链接,它会打开显示此链接的网页,当我单击“在 PLAY 商店中打开”时,它只会将我带到 Play 商店,但只有官方版本可用(不是我上传的内部版本)。
我做错了什么吗?我尝试了将近 2 天来完成这样一个简单的事情,这非常令人沮丧......
我有一个带有几个按钮的主屏幕小部件。其中之一应该调用(电话)日历对话框来创建新事件。所以我向我的小部件按钮注册了监听器:
Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setData(CalendarContract.Events.CONTENT_URI);
PendingIntent pi = PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
updateViews.setOnClickPendingIntent(R.id.btnAdd, pi);
Run Code Online (Sandbox Code Playgroud)
当我在小部件中推送此按钮时,它会启动日历对话框来创建新事件 - 这是可以的。但是,在填写完所有字段并按日历中的“完成”后,我想返回到我的应用程序(或返回到我的小部件的主屏幕)。相反,我仍在日历应用程序中。怎么处理这个问题,或者有可能吗?
我在里面有listview的widget,每天几次listview项目就消失了.我发现它可能是由于启动器重启 - 所以我尝试了一点测试.我手动重启启动器,它刚刚证实了我的怀疑 - 这肯定是因为启动器重启.
怎么处理这个?其余的小部件(按钮,听众,...)正在工作,只是listview项目消失,我甚至看不到empty_list布局,我定义 - 这就是为什么我必须添加到我的小部件手动刷新按钮,但它不是很好解决方案......
我的应用只是一个简单的日历闹钟应用,并使用此权限:
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_CALENDAR">
Run Code Online (Sandbox Code Playgroud)
然而我得到了这个警告:
但是我没有使用上述任何权限.另外,还有两个证明:
我只使用默认的谷歌支持库,即使我解压缩最终的apk文件,并手动检查清单,没有其他权限
此外,当我在手机上安装应用程序,并检查phone => apps =>
权限时,除了我列出的权限之外没有任何权限.
它必须是一个bug或什么,为什么我得到这个警告?
我能做什么?我几天前填写表格,但谷歌甚至没有回复我...
编辑:更奇怪的是,显示警告是完全随机的.有一天,我看到警告,然后我刷新页面,它消失了.然后我一周都看不到它,然后突然间我又看到了它.当我刷新页面时它总是消失,但后来它再次显示.完全随机.
我在我的应用程序中使用joda-time.jar,并在导出已签名的apk proguard时说出类似的东西(这是我看到的非常常见的问题,当我查看互联网时):
[2014-01-07 12:44:53 - XYZ] Proguard returned with error code 1. See console
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.DateMidnight: can't find referenced class org.joda.convert.FromString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.DateTime: can't find referenced class org.joda.convert.FromString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.FromString
...
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.FromString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.ToString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.base.AbstractDuration: can't find …
Run Code Online (Sandbox Code Playgroud)