为了调试目的,我想在两个运行的Android应用程序(客户端和服务器(之间快速切换。两者通过插座连接。理想情况下,我想在两者上都添加一个按钮来切换到另一个(保留连接(,这样我就可以很容易地看到两端发生了什么。
以下是我尝试过的:
-
使用"最近的应用程序"按钮
这很好,但有点尴尬,尤其是在堆栈很大的情况下。 -
使用分割屏幕
这也很好,但小屏幕是有问题的 -
尝试过第三方应用程序切换器,但不喜欢这些。
-
尝试按程序包名称启动活动(单击按钮(
这是我的首选解决方案,但出现了问题。切换正常,但每次创建、启动新任务并将其推送到堆栈上(不保留连接(。以下代码:void switchToClient() // from Server (on Button click) { // Alternative Flags Tried: none, FLAG_ACTIVITY_SINGLE_TOP, FLAG_ACTIVITY_NEW_TASK, other Intent intent; intent = this.getPackageManager().getLaunchIntentForPackage( "com.example.Client" ); intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); startActivity( intent ); }
我终于学会了如何在应用程序之间切换程序化地(保持它们的状态(。在每个应用程序中,我使用"getTaskId(("获取其任务id,并将其保存到/sdcard/上的文件中。
然后,在每个应用程序中,点击一个按钮,我就会调用
void switchTask()
{
int tid;
ActivityManager am;
am = (ActivityManager)Ctx.getSystemService( Context.ACTIVITY_SERVICE );
tid = getPkgTaskId(); // read task id of *other* app from file
am.moveTaskToFront( tid, 0, null );
}
注意:这些需要权限:
- READ_EXTERNAL_STORAGE
- 写入外部存储
- 重新排序任务