我是新来的android开发,我想安装一些应用程序的属性基于应用程序首次运行后安装。 有没有办法find应用程序第一次运行,然后设置其第一次运行属性?
为什么我在这里读到大部分有关AsyncTask和Loaders的问题的答案,但没有提供有关服务的内容 ? 服务是不是很好知道,或者是否被弃用或有一些不好的属性或东西? 有什么区别? (顺便说一句,我知道还有其他的线索,但是没有一个真正的差异可以帮助开发人员轻松地决定他是否更好地使用这个或那个来解决实际问题。)
更新到0.4.2后,打开一个项目时出现这个错误:“Gradle项目同步失败。 基本function(例如编辑,debugging)不能正常工作“ 事件日志显示了这一点: Error occurred during initialization of VM Could not reserve enough space for object heap Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. at org.gradle.launcher.daemon.bootstrap.DaemonGreeter.parseDaemonOutput(DaemonGreeter.java:34) at org.gradle.launcher.daemon.client.DefaultDaemonStarter.startProcess(DefaultDaemonStarter.java:109) at org.gradle.launcher.daemon.client.DefaultDaemonStarter.startDaemon(DefaultDaemonStarter.java:90) at org.gradle.launcher.daemon.client.DefaultDaemonConnector.startDaemon(DefaultDaemonConnector.java:95) at org.gradle.launcher.daemon.client.DefaultDaemonConnector.connect(DefaultDaemonConnector.java:72) at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:149) at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:74) at org.gradle.tooling.internal.provider.DaemonBuildActionExecuter.execute(DaemonBuildActionExecuter.java:42) at org.gradle.tooling.internal.provider.DaemonBuildActionExecuter.execute(DaemonBuildActionExecuter.java:29) at org.gradle.tooling.internal.provider.LoggingBridgingBuildActionExecuter.execute(LoggingBridgingBuildActionExecuter.java:53) at […]
我想使用最新Android Maps API(v2)的新TileProviderfunction来覆盖GoogleMap上的一些自定义贴图。 然而,因为我的用户很多时间都没有互联网,所以我想保持设备上的zip文件/文件夹结构中存储的磁贴。 我将使用带有geotiffs生成我的瓷砖。 我的问题是: 什么是将瓷砖存储在设备上的最佳方式? 我将如何去创build返回本地磁贴的TileProvider?
首先,我知道不应该在Android上杀死/重启应用程序。 在我的使用案例中,我希望在特定的情况下,在服务器向客户端发送特定信息的情况下,重置我的应用程序。 用户只能使用应用程序的一个实例在服务器上login(即不允许多个设备)。 如果另一个实例获取“login”锁,那么该用户的所有其他实例都必须删除其数据(出厂重置),以保持一致性。 有可能强行获取锁,因为用户可能会删除应用程序并重新安装,这将导致不同的实例id,用户将无法再解锁。 因此有可能强行取得locking。 由于这种可能性,我们需要经常检查一个具体实例是否有锁。 这是(几乎)对服务器的每个请求完成的。 服务器可能会发送一个“错误的lockingID”。 如果检测到,客户端应用程序必须删除所有内容。 这是用例。 否,执行问题: 我有一个Activity A,根据sharedPrefs字段启动loginActivity L或应用程序的主要Activity B. 启动L或B后,自行closures,只有L或B正在运行。 所以在用户已经login的情况下,B现在正在运行。 B启动C. C调用IntentService startService D.导致这个堆栈: (A)> B> C> D 从D的onHandleIntent方法将事件发送到ResultReceiver R. R现在通过为用户提供一个对话框来处理这个事件,在这个对话框中他可以select在工厂重置应用程序(删除数据库,sharedPrefs等) 出厂重置后,我想重新启动应用程序(closures所有活动),只需重新启动A,然后启动loginActivity L并完成: (A)> L Dialog的onClick方法如下所示: @Override public void onClick(DialogInterface dialog, int which) { // Will call onCancelListener MyApplication.factoryReset(); // (Deletes the database, clears sharedPrefs, etc.) Intent […]
创build一个Intent时,MyActivity对用户起作用,使用XML标记可以轻松实现主页button: <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 我想知道如何避免在主屏幕上select“你想使用什么活动”? HTC已经将其“Touch Flo”(感知)覆盖默认的“开始”活动,并且如果我通常要使用“开始”或“TouchFlo”,我永远不会得到问题。 但是,当我添加自己的活动时,我总是得到这个问题。 是的,我知道我可以检查“使用这个标准” – checkbox,但那不是我现在想要的。 所以,问题是:我可以让系统重写所有其他的东西,并始终使用MyActivity作为默认值? 接下来,我真的只想在应用程序运行时覆盖正常的主屏幕。 如果它没有运行,一切都应该正常工作,即MyActivity不应该与主页button相关联。 任何想法都会很棒。
大家好, 我想通过程序启用/禁用蓝牙..我有以下代码。 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 但是这种代码在SDK 1.5中不起作用。我如何在SDK 1.5中做同样的事情?
我一直在阅读其他文章,追踪在Android应用程序中获取SIGSEGV的原因。 我计划扫描我的应用程序可能的NullPointers相关的canvas使用,但我的SIGSEGV barfs上一个不同的内存地址每次。 另外我见过的code=1和code=2 。 如果内存地址是0x00000000 ,我会有一个线索,它是一个空指针。 我得到的最后一个是code=2 : A/libc(4969): Fatal signal 11 (SIGSEGV) at 0x42a637d9 (code=2) 有关如何跟踪这个问题的任何build议? 我有一个嫌疑犯,但我不想尝试它。 我的应用程序使用OSMDroid API进行离线映射。 OverlayItem类表示地图上的标记/节点。 我有一个服务,通过networking收集数据来填充OverlayItem,然后显示在地图上。 为了简化我的devise,我将OverlayItem扩展到了我自己的NodeOverlayItem类中,该类包含了我在UI活动和服务中使用的一些附加属性。 这给了我一个关于UI和服务的单项信息。 我使用Intents广播到活动刷新UI地图时,一些改变。 活动绑定到服务,并有一个服务方法来获取NodeOverlayItem的列表。 我想这可能是OSMDroid API使用OverlayItem,同时我的Service更新节点信息。 (并发问题) 当我写这篇文章时,我认为这确实是个问题。 令人头疼的是NodeOverlayItem没有将Node和OverlayItem分开,这就是Activity需要来自Node的一些数据,这个Service就是这样。 另外当Activity被创build时(onResume等等),OverlayItem对象将需要从活动不在时服务一直维护的Node数据重新创build。 例如,您启动应用程序,服务收集数据,用户界面显示它,你回家,然后回到应用程序,活动将需要拉动,并从最新的服务节点数据重新创buildOverlayItem的。 我知道这不是一个很好的或明确的问题。 这就像我所有的问题都是利基或模糊的。 如果任何人有关于如何解释这些SIGSEGV错误的build议,将不胜感激! 更新这是debugging会话期间捕获的最新的崩溃。 我有3个这些设备用于testing,当我正在开发和testing时,它们并不全部可靠地崩溃。 我包括了一些额外的东西,所以GC日志logging可以注意到。 你可以看到这个问题可能与内存耗尽无关。 03-03 02:02:38.328: I/CommService(7477): Received packet from: 192.168.1.102 03-03 02:02:38.328: I/CommService(7477): Already processed this packet. […]
我对这个完整的gradle和Android Studio支持非常新颖。 我设法将我的Android项目转换为使用导出选项的Gradle。 但是我正在寻找一些文档或开始如何将NDK构build集成到gradle构build过程中。 如果可能的话,我还需要某种“后”阶段,将构build二进制文件(.so文件)复制到资产目录。
我用AutuCompleteTextView [ACTV]和button创build了一个Activity。 我在ACTV中input一些文字,然后按下button。 我按下button后,我希望活动转到另一个活动。 在第二个活动中,我只想将在ACTV(第一个活动)中input的文本显示为TextView。 我知道如何开始第二个活动,如下所示: Intent i = new Intent(this, ActivityTwo.class); startActivity(i); 我已经编码,以获得从ACTVinput的文字。 AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete); CharSequence getrec=textView.getText(); 我的问题是如何从第一个活动传递“getrec”(按下button之后)到第二个活动。 后来在第二个活动中收到“getrec”。 请假定我已经使用“onClick(View v)”为button创build了事件处理程序类