1

私は、デバイス上のすべてのアプリを次々と継続的に起動するテスト アプリに取り組んでいます。このアプリは、主にコンテキスト スイッチによる UI の安定性テストを目的としています。私は Android を初めて使用し、途中で物事を理解しようとしています。どんな提案でも深く感謝します

これは私のアプリが行っていると思われるものです:-


  1. デバイスにクエリを実行し、システム アプリを含むデバイス上のすべてのアプリのリストを取得します
  2. デバイス上のすべてのアプリが起動されるまで、各アプリを次々に起動します
  3. 一度リストを通過すると、リストの最初のアプリからやり直します

    私のアプリを Launcher_app と呼び、デバイスに 5 つのアプリ A、B、C、D、E があるとします。Launcher アプリは A、次に B、C、D、E をこの順序で起動し、A を起動して再び開始します。ユーザーがランチャーアプリを手動で存在させるまで続行します

アプリを実装しようとしましたが、Android システムでこのようなコンテキスト スイッチがどのように許可されるかについていくつか質問があります。

これは、各アプリを自動起動するコード スニペットです。

ublic Runnable AutoLaunch = new Runnable() {

public void run()
{

   while(AppIndex < mAppsList.getCount())
   {


       //get the app name using index AppIndex
       //launch app using the appname
      App app = (App) mAppsList.getItemAtPosition(AppIndex);
     Intent i = getPackageManager().getLaunchIntentForPackage(app.getPackageName());
       try 
          {
             if (i != null) 
             {
                startActivity(i);

             } 
             else 
             {
                i = new Intent(app.getPackageName());
                startActivity(i);

             }
             for(int j=0;j<2000;j++)
                 for(int k=0;k<10000;k++)
                     continue;
             finish();

          } 
          catch (ActivityNotFoundException err) 
          {
             //Toast.makeText(ListInstalledApps.this, "Error launching app", Toast.LENGTH_SHORT).show();
          }

    if(AppIndex == mAppsList.getCount()-1)
          AppIndex = 0;
      else                
          AppIndex++;

   }

これは私の理解です:-

ランチャー アプリは、最初はフォアグラウンド (FG) になります。次に、アプリ A が Forground になり、Launcher_app が Background(BG) になります。アプリ B は FG に、アプリ A は Launcher アプリと共に BG に移動します。このように続けると、アプリ E が FG になり、ランチャー アプリを含む残りのアプリが BG になります。

上記の実装でアプリを実行しようとすると、アプリが起動しているのがわかりますが、アプリの順序はランダムです。また、デバイスが起動しているアプリがほとんど表示されません。自分が正しい道を進んでいるとわかるまで、先に進みたくありませんでした

この状況では、次の反復で、Launhcer アプリはアプリ A、B、C、D、E の順序で再開しますか、それとも各アプリを再起動しますか? また、実際のシナリオでシステムがメモリを必要とする場合、Launcher アプリは強制終了されます。 BG で実行されているデバイス上の 50 近くのアプリ。または、これが他のすべてのアプリを起動するメインのアプリであるため、システムは私のアプリを存続させます。

そのようなアプリが実現可能かどうかを本当に知りたいので、それがどのように機能するかを理解するのを手伝ってください。上記の問題に対処する最善の方法は何ですか。あらゆる種類のポインタ/提案に感謝します.

ありがとうミニ

4

1 に答える 1

2

これは何ですか:

for(int j=0;j<2000;j++)
    for(int k=0;k<10000;k++)
        continue;

遅延を導入しようとしているだけの場合は、しばらくスリープするかpostDelayed、通話の間隔を空けるなどの方法を使用できます。

アプリの起動が速すぎるというあなたの推測に同意します。基本的に、それらすべてを一度に起動しているため、ランダムな順序のように見えるもの (起動時間が異なるため) が表示され、別の UI がフォーカスを得る前に UI を表示する時間がないものもあります。

遅延コードを修正すると、これのほとんどが大幅に改善されるはずです。

于 2012-04-06T21:37:40.487 に答える