korechi’s diary

とあるVR/ARエンジニアのブログ

Androidアプリ開発メモ

スレッド処理

AndroidのUIに関する部分はシングルスレッドで動作することしか許されていないため、UIはシングルスレッドで動作させなければいけない。
それに違反すると

CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views

と怒られる。なので

private TextView mTextView;

mActivity.runOnUiThread(new Runnable() {
  @Override
  public void run() {
    // mTextView.setVisibility(View.VISIBLE);
  }
}

のように明示的にUIスレッドで処理を行うと書けば良い。

画面遷移

アプリで画面遷移を行うには、res/layout/下にsub_activity.xmlを作成し、SubActivity.java内で

public class SubActivity extends WearableActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sub_activity);
    }
}

と記述する。また、Manifest内にもMainのと同じ列に

<activity
            android:name=".SubActivity"
            android:label="@string/app_name" >
 </activity>

を追加する。
これをMainActivityかどこか画面遷移を行いたいタイミングで

Intent intent = new Intent(getApplication(), SubActivity.class);
startActivity(intent);

スレッド処理

AndroidのUIに関する部分はシングルスレッドで動作することしか許されていないため、UIはシングルスレッドで動作させなければいけない。
それに違反すると

CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views

と怒られる。なので

private TextView mTextView;

mActivity.runOnUiThread(new Runnable() {
  @Override
  public void run() {
    // mTextView.setVisibility(View.VISIBLE);
  }
}

のように明示的にUIスレッドで処理を行うと書けば良い。