我在Intellij 8中使用了Java调试器并注意到一个标有"drop frame"的按钮,有人知道这个用途的目的是什么吗?如何/为什么这将被使用/有用?
我用远程接口编写了一个服务,并将其安装在我的PC的Eclipse AVD上.我有一个客户端测试工具,它启动并调用服务中的方法.最初我通过控件类和活动安装了服务,我现在已将其删除,因此服务的清单如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myname.gridservice"
android:versionCode="1"
android:versionName="1.0">
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<service
android:enabled="true"
android:debuggable="true"
android:name="OverlayService">
<intent-filter>
<action android:name="com.myname.OverlayService.SERVICE"/>
<action android:name="com.myname.gridservice.IRemoteInterface" />
</intent-filter>
</service>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
所以没有活动标签.
当我从Eclipse中的调试图标启动它时,控制台告诉我它正在安装apk(它是),但它不会显示为调试线程并且不会触发断点,尽管服务的行为是可以的客户看到了它.如果我将服务标签包装在具有关联类的活动标签中并启动它,那么我可以调试它
是否可以调试服务而不将其包装在活动中?
每次启动新的调试实例时,我的辅助功能服务都会重置为禁用状态.
是否有任何方法可以在连续的调试运行中保持启用(因为每次启用调试服务都很长很无聊)?
我在真实设备和模拟器上有相同的行为.
服务中没有异常,我在事件处理程序中尝试了没有代码的事件.
我的日志中有可疑的行:
10:47:32.801 31669-31669/? E/AffinityControl: AffinityControl: registerfunction enter
10:47:32.821 3650-3690/? I/ActivityManager: Force stopping com.test.testaccessibilityservice appid=10241 user=0: from pid 31669
10:47:32.821 3650-3690/? I/ActivityManager: Killing 31271:com.test.testaccessibilityservice/u0a241 (adj 1): stop com.test.testaccessibilityservice cause from pid
10:47:32.821 3650-3690/? W/ActivityManager: Scheduling restart of crashed service com.test.testaccessibilityservice/.MyAccessibilityService in 1000ms
10:47:32.821 3650-3690/? I/ActivityManager: Force stopping service ServiceRecord{3f5e1fc4 u0 com.test.testaccessibilityservice/.MyAccessibilityService}
Run Code Online (Sandbox Code Playgroud)
因此服务被强制停止并且从未重新启动.
笔记:
我对ApiDemos示例和ClockBackService(QueryBackService)也有相同的行为:
18:07:15.871 3523-4251/? I/ActivityManager: Force stopping com.example.android.apis appid=10242 user=0: from pid 19382
18:07:15.871 3523-4251/? I/ActivityManager: Killing 16542:com.example.android.apis/u0a242 (adj 1): stop com.example.android.apis …Run Code Online (Sandbox Code Playgroud)众所周知,当我们在Android 6.0中拒绝运行时的权限并从最近的菜单中恢复应用程序时,应用程序进程将被终止,应用程序将被强制重新启动.据称这是为了防止任何安全问题:
值得注意的是,当恢复时,应用程序会从最后一次重新开始Activity.操作系统显然跟踪Activity用户访问的最后一次.
不幸的是,这是一个问题,因为它打破了业务逻辑的流程.不允许用户以这种方式中途访问应用程序.
我的问题是,有没有办法强制应用程序从Activity应用程序的第一个重新启动,而不是用户将其保留的应用程序?
是否有与应用程序重启/进程终止/权限切换相关的回调?
这是一种错误的做法吗?如果是这样,怎么样?什么是正确的方法?
这种行为当然在以前被观察过:
2. 启用/禁用Android M nexus 6上的设置权限后,应用程序将被终止
android android-activity android-permissions activity-manager android-6.0-marshmallow
有没有正确的方法在Android Studio中调试服务?或Android Studio无法做到这一点?当我尝试调试时,它只会断开套接字.("与目标VM断开连接,地址:'localhost:8600',传输'套接字')
希望你能在这里帮助我..
我在这里通过一些链接做了什么建议,我放了.waitForDebugger但没有任何反应.请帮帮我..非常感谢你.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent mainService = new Intent(this,MainPowerAndVolumeService.class);
startService(mainService);
android.os.Debug.waitForDebugger();
finish();
}
Run Code Online (Sandbox Code Playgroud) 我调查了一些问题,在我的应用程序的启动过程,发生,但直到进程DDMS将无法启动调试模式已经开始了,是有办法,我可以更早捕获的事件?
我一直在为Android开发一个包含后台服务的PhoneGap应用程序.我的问题是:我该如何调试这项服务?是否可以使用AVD进行调试并逐步进行?或者我可以使用自己的设备来实现这一目标吗?
谢谢!
我试图将断点添加到在单独的线程上运行的服务.无论我在哪里将断点放在服务中,它们总是被忽略.
我确信该服务正在运行,因为我Log.e在logcat中看到了.我的调试模式也正确用作应用程序主线程中的任何断点.
我错过了什么吗?单独线程中的服务不支持调试模式吗?
我刚刚将Eclipse和Android SDK工具更新到了今天的最新版本.
我在设备上测试我的应用程序.