Java 为什么我不能多次通过adb为我的应用程序调用同一活动?

Java 为什么我不能多次通过adb为我的应用程序调用同一活动?,java,android,android-activity,adb,Java,Android,Android Activity,Adb,使用adb执行活动的shell时,将在应用程序中调用活动。如果我尝试对同一活动执行相同的adb命令,它将无法正常工作。在我再次调用相同的活动之前,我必须使用am force stop adb shell am start -n com.xxx.android/.SomeActivity adb shell am start -n com.xxx.android/.SomeActivity 此特定活动将写入日志 问题 从亚洲开发银行多次执行活动的正确方式是什么 读了这篇文章后,我想知道如果我

使用
adb
执行活动的shell时,将在应用程序中调用活动。如果我尝试对同一活动执行相同的adb命令,它将无法正常工作。在我再次调用相同的活动之前,我必须使用am force stop

 adb shell am start -n com.xxx.android/.SomeActivity
 adb shell am start -n com.xxx.android/.SomeActivity
此特定活动将写入日志

问题

从亚洲开发银行多次执行活动的正确方式是什么

读了这篇文章后,我想知道如果我们已经启动了应用程序,am start是否不是正确的命令

在应用程序已经运行后,我如何对我的活动进行adb调用,即我已经运行了
am start

多谢各位

样本活动

public class SomeActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.i("SomeActivity", "Starting Activity" );
        ... does something
        Log.i("SomeActivity", "Finished" );
        System.exit(0);
    }
}

当您尝试启动已在运行的活动时,Android系统不会创建该活动的新实例。相反,它只是把现有的一个带到前台


这意味着将根据需要调用活动的生命周期回调方法。你应该阅读和理解这些方法。特别是,我认为您希望在第二次尝试启动活动时调用
onCreate()
。这不是保证。

我理解您的问题,您可能需要向您的活动发送意向。 如果要向活动发送操作,则可以使用-a

在本例中,您希望-a指定操作,-d指定数据URI,-ez指定额外的(如果需要)。 通过在文档中查找Intent.action\视图,可以找到操作名称

此示例使用了一个额外的布尔值

adb shell am start -a android.intent.action.VIEW -d com.package.activity:// --ez parameterName true
这将等同于

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("com.package.activity://"));
intent.putExtra("parameterName", true);
startActivity(intent);
然后在您的活动中,您可以通过onNewIntent或onCreate捕获它


打电话是什么意思?“调用”一项活动意味着什么?“用另一个调用更新日志”的确切含义是什么?您的
adb shell
命令启动了一个活动。我认为这应该更清楚。再次阅读后,我想我们可能没有正确调用adb进行第二次尝试,因为它再次使用am start。我认为,一旦应用程序启动,我们可能应该使用不同的adb调用。“如果我尝试对同一个活动执行相同的adb命令,它将无法正常工作。”当您请求一个活动多次启动时,您预计会发生什么情况?“功能正确”是什么意思?为什么您需要另一个活动来进行您在原始问题中提到的日志调用?另一个常规Java类是否可以在没有启动活动开销的情况下进行日志记录?更重要的是,为什么需要启动另一个活动来进行日志记录?是否有理由不使用非活动类执行此操作?它是否会重新运行该活动的功能?@ALM活动生命周期方法将根据需要调用。