0

これは、各Intentのスレッドを挿入したいコードです。

public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()){
case R.id.artlistbtn:
    Intent openAL = new Intent(MainCore.this, MainActivity.class);
    startActivityForResult(openAL, 0);
        break;
case R.id.customslaws:
    Intent openCL = new Intent("slidenerd.vivz.FLAWS");
    startActivity(openCL);
    break;
case R.id.shouldknowbtn:
    Intent openSK = new Intent("slidenerd.vivz.KNOW");
    startActivity(openSK);
    break;
            }
  }
}
4

3 に答える 3

2

すべてのアクティビティは、ユーザーではなくシステムによって設定される単一のメイン スレッドで実行されます。ただし、アクティビティ内から自由に独自のスレッドを作成し、そこでコードを実行することはできます。

于 2013-10-03T03:43:25.217 に答える
0

Androidプログラムを実行すると、単一のスレッドである UI スレッドから開始されます。これは、Android システム サービスと通信して、何を、いつ、どのように行うべきかをアプリに通知できる唯一のサービスです。

新しいアクティビティを作成する場合、新しいスレッドを作成するのではなく、既存のスレッドに追加するだけです。

実行に時間がかかり、別のスレッドで操作する必要がある操作を実行する必要がある場合は、次のように実行できます。

new Thread(){
    public void run(){
        while(true){
            //do stuff
        }
    }
}.start();

スレッドが個別に実行され、アプリが ANR にならないようにする場所。

このスレッドは、タスクを完了することによって終了するか、強制終了されるまで実行され続けますが、新しいアクティビティを起動すると、そのアクティビティへのアクセスが失われるか、コールバックが失われる可能性があり、しばらく実行するスレッドが必要になる場合があります。システム全体ですべてにアクセスします。これの最適な使用法とあなたの問題は、service.

ドキュメントを参照してください サービスは、長時間実行される操作を実行するアプリケーションの要求を表すアプリケーション コンポーネントです。

于 2013-10-03T04:02:31.727 に答える
0

まず第一に、別のスレッドからこのタイプのアクションを実行するべきではありません。常にメイン スレッドから UI 操作を実行する必要があります (そして onClick メソッドはメイン スレッドで実行されます) または (別のスレッドを使用する場合) - この関数をラップします。 runOnUIThread 呼び出しで、とにかくメインスレッドで startActivity/startActivityForResult が実行されます。なぜこれに別のスレッドが必要なのですか?startActivity/startActivityForResult は非同期呼び出しであるため、コードをブロックしません。

于 2013-10-03T03:37:24.293 に答える