Articles of 进程

使用多个进程的应用程序是否共享Dalvik实例?

我正在研究Android进程管理,我想知道使用多个进程(不是线程)的应用程序是否共享Dalvik实例,或者每个进程是否存在Dalvik实例,即使对于同一个应用程序也是如此。 你能指点一些官方消息来源( doc,talk,paper等)吗? 谢谢

registerOnSharedPreferenceChangeListener不适用于在不同进程中进行的更改

我在我的Activity中注册了registerOnSharedPreferenceChangeListener和我的SharedPreferences 。 当我在不同进程中运行的服务内部更改使用SharedPreferences保存的数据时,不会调用onSharedPreferenceChanged ! 我该怎么办才能让android调用onSharedPreferenceChanged ?

我应该何时使用Android的各种消息types?

我已经使用Android一年多了,但我仍然无法确定何时应该使用进程/线程之间的不同types的消息传递/通信。 我主要讨论的是广播Intents,使用AIDL进行services ,使用Handler发送消息和套接字通信。 其中许多工具可用于完成类似任务,但哪种工具更适合特定情况?

如何杀死第三方应用程序?

我的程序需要杀死一个特定的应用程序。 是否可以在股票,无根设备上? 如果是 – 如何? 我知道它的进程名称和PID。

Android:父进程(app)死后,subprocess(logcat)继续运行

我们的Android应用程序生成一个logcat shell进程,然后读取其结果进行处理。 但是,当应用程序停止时(例如,在开发期间重新编译后重新启动时),logcat进程将继续运行。 以下是此行为的示例: processes = new ArrayList(); try { processes.add(Runtime.getRuntime().exec(“logcat -v time”)); processes.add(Runtime.getRuntime().exec(“logcat -v time”)); processes.add(Runtime.getRuntime().exec(“logcat -v time”)); processes.add(Runtime.getRuntime().exec(“logcat -v time”)); } catch (IOException e) { // oh no! } Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { for (Process p : processes) { p.destroy(); } }; }); 将其添加到测试应用程序的onCreate()方法,启动它,然后使用设置管理器强制停止它。 subprocess将继续运行,现在父进程为1。 在如何杀死Android应用程序启动的logcat进程? 有人建议使用ProcessBuilder,但这不是解决方案,而且流程也会继续运行。 在父进程停止的Stopsubprocess中,它被建议使用一个关闭钩子 – 这不起作用,如上所示。 […]

如何杀死Android中未运行的进程

以前有人遇到过这种情况吗? 我强制在Android设备的设置对话框中停止应用。 但是当我通过adb使用ps命令时,它仍然显示在屏幕上。 但是这个过程不能通过activityManager.getRunningAppProcesses()来获取。 这个过程甚至在我卸载这个应用程序后存在,它发生在随机。 因为我使用ServerSocket在我的应用程序中打开了一个端口,所以在我停止我的应用程序后无法释放该端口。 下次我尝试打开我的应用时,它再次无法使用此端口。 我使用的是华硕EeePad,这个问题似乎只发生在该设备上。 顺便说一句,任何第三方工具(如流程管理器)都无法获取该流程。 但是当我通过adb shell使用ps来列出所有进程时,它确实存在于pid 。

如何在不同的过程中建立活动与服务之间的双向沟通​​?

我正在努力建立一个在不同进程中运行的Activity和Service之间的双向通信。 从Activity中查询进程没什么大不了的。 但我希望该过程通知事件活动。 它背后的想法是:服务独立于实际的应用程序运行。 它定期查询Web服务器。 如果在Web服务器上find新任务,则该进程应通知该活动。 我在AndDev.org上find了这个post ,但它似乎对我不起作用。 我一直在搞乱BroadcastReceiver。 我已经实现了一个应该通知Activity的接口,但问题是监听器总是为null,因为进程的Broadcast是通过Intent完成的,因此扩展BroadcastReceiver的类将被新实例化。 如何建立双向通信? 这必须是可能的。 谢谢你的帮助, steff

如何强制停止Android应用

如何使用Java代码强制停止应用程序? 我正在尝试构建一个内存清理器,它可以帮助清理后台进程。 强制停止的意思是确保当你转到应用程序详细信息时, FORCE STOP按钮显示为灰色。 我知道有一种方法可以杀死应用程序的进程,但是当你进入运行列表时,即使你杀了它,应用程序仍然存在。 我尝试了很多类似的内存清理应用程序,其中只有一个可以完全FORCE STOP应用程序,但它有很多无用的通知 – 非常烦人。 PS:当您转到Settings -> Apps ,您可以看到应用程序列表,单击其中一个,您可以访问它的应用程序信息。 有一个名为FORCE STOP的按钮。 通过点击它,应用程序完全被杀死。 我想在我的应用程序中执行这种操作,是否有任何代码片段可以执行此操作?

你可以跟踪Android应用程序何时被终止?

看看android文档,似乎我们没有能力知道应用程序什么时候关闭。 无论是由用户明确还是由操作系统自动完成。 以下是onTerminate()文档 ,该文档仅在模拟方案中可用。 public void onTerminate() 自:API级别1 此方法用于模拟过程环境。 永远不会在生产Android设备上调用它,只需杀死它们即可删除进程; 这样做时不会执行任何用户代码(包括此回调)。 当用户关闭应用程序时,是否有任何其他方法可以报告? 如果我们需要在我们未来的生产应用程序中加入其他function,我们需要从试点/可用性角度了解。

进程名称是否与android中的包名相同?

通过进程我的意思是我们在android:process提供的android:process和包我的意思是包 更多细节进程和线程 – Android开发人员 我想获得所有正在运行的应用程序的应用程序名称 所以这就是我在查看各种来源后所做的事情(并且有效)。 ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); PackageManager packageManager = getPackageManager(); final List runningProcesses = activityManager.getRunningAppProcesses(); for(RunningAppProcessInfo processInfo : runningProcesses) { CharSequence appName = null; try { appName = packageManager.getApplicationLabel(packageManager.getApplicationInfo(processInfo.processName, PackageManager.GET_META_DATA)); } catch (NameNotFoundException e) { Log.e(TAG,”Application info not found for process : ” + processInfo.processName,e); } } 如果您看到PackageManager.getApplicationInfo的文档 ApplicationInfo android.content.pm.PackageManager.getApplicationInfo(String […]