2016-10-18 13 views
-2

adbを使用してアクティビティにシェルを実行すると、アクティビティはアプリケーションで呼び出されます。同じ活動に同じadbコマンドを実行しようとすると、正しく機能しません。同じ活動をもう一度呼び出す前に、強制停止を使用しなければならない。私のアプリケーションのadb経由で同じアクティビティを複数回呼び出すことができないのはなぜですか?

adb shell am start -n com.xxx.android/.SomeActivity 
adb shell am start -n com.xxx.android/.SomeActivity 

この特定のアクティビティはログに書き出されます。

質問

ADBから1時間以上活動を実行するための正しい方法は何ですか?

これを読んだ後で、私たちはすでにアプリケーションを起動している場合、起動が正しいコマンドではないかと思いますか?

は、どのように私はあなたに感謝し、私は

am startを走っていると、アプリケーションが既に実行された後、私の活動にIEをADB電話をかけることでしょう

サンプルアクティビティあなたが起動しよう

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); 
    } 
} 
+0

「電話をかける」とはどういう意味ですか?アクティビティを「呼び出す」とはどういう意味ですか? 「ログが別の呼び出しで更新されている」とはどういう意味ですか? 'adb shell'コマンドがアクティビティを開始します。 – CommonsWare

+0

私はそれがもっとはっきりしていると思います。もう一度それを読んだ後、私は2回目の試みのためにadbを正しく呼んでいないかもしれないと思っています。私はおそらく、アプリケーションが起動されたら、別のadbコールを使用しているはずです。 – ALM

+0

"同じアクティビティに対して同じadbコマンドを実行しようとすると、正しく機能しません。 –

答えて

0

既に実行中のアクティビティは、Androidシステムはアクティビティの新しいインスタンスを作成しません。代わりに、既存のものを前景に持っていくだけです。

これは、アクティビティのライフサイクルコールバックメソッドが適切に呼び出されることを意味します。これらの方法をよりよく理解するには、Managing the Activity LifecycleActivitiesを読んでください。特に、アクティビティを開始しようとすると、onCreate()が呼び出されると思います。これは保証されていません。

+0

そのアクティビティは何を再実行しますか? – ALM

+0

@ALMアクティビティライフサイクルメソッドが適切に呼び出されます。 –

0

私はあなたの質問を理解しているので、あなたの活動をインテントにする必要があるかもしれません。 アクションにアクションを送信する場合は、-a

を使用できます。アクションを指定するには-a、データURIを指定するには-d、データURIを指定するには-e、必要に応じて)。 アクション名は、ドキュメントの「Intent.ACTION_VIEW」を参照して見つけることができます。

この例では、これは、あなたの活動にあなたが

https://developer.android.com/studio/command-line/adb.html#IntentSpec

のonCreate

onNewIntentを介して、またはそれをキャッチすることができます

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("com.package.activity://")); 
intent.putExtra("parameterName", true); 
startActivity(intent); 

にequvilantだろう余分なブール

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

であります