質問

ねえ、これを見てくれてありがとう。これが起こる理由は本当に理解できませんが、AudioInputを処理している私の背景スレッドと関係があるかもしれません。私が電話を傾けるまですべてが正常に動作します。まだ風景の肖像画やそのようなものを入れていません。したがって、ポートレートのレイアウトを自動的に伸ばすだけです。しかし、それはただそれを伸ばすだけで、私のラベルをリセットし、それらに私のsettex機能を使用することができなくなります。また、背景スレッドを一時停止することにも気付きました。 TextViewsを設定するコードは次のとおりです。

private void reactOnAudioMessage(Message msg) {
    TextView txtVwLastValue = (TextView) findViewById(R.id.txtVwLastValue);
    String result=null;
    DataFile newData=null;
    Bundle bndl=msg.getData();
    // ** newData getting created, with the correcy value etc this is not the problem.
    if(newData!=null){
        txtVwLastValue.setText("Last Value Received:" +newData.getValue());
        mDataList.add(newData);
        drawGraph(mImageView);
    } 
}

これが私のXMLファイルです

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Record"
android:id="@+id/btnRecord">
</Button>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Last Value Received:" android:id="@+id/txtVwLastValue"></TextView>
<TextView android:text="TextView" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/txtVwType"></TextView>
<ImageView android:src="@drawable/icon" android:layout_width="fill_parent" android:id="@+id/imgViewGraph" android:layout_height="300px"></ImageView>
</LinearLayout>
役に立ちましたか?

解決

So it should automatic just stretch my portrait layout.

あなたも見たように、これは完全に真実ではありません。未解決のオリエンテーションの変更の予想される動作は、アクティビティを再現することです(これは、アクティビティライフサイクル全体、ondestroy()、oncreate()などを通過することを意味します - 明らかにラベルがリセットされている理由)。これはさまざまな方法で処理できます。

http://developer.android.com/guide/topics/resources/runtime-changes.html & http://developer.android.com/resources/articles/faster-screen-orientation-change.html

アプリケーションでは、オリエンテーションの変化を2つのかなり簡単な方法で「処理」します。 1つのアクティビティは、マニフェストに洗練されたフラグを設定することにより、ポートレートにロックされています(風景でそれを見ることは意味がないので):

<activity android:name=".SettingsActivity" android:screenOrientation="portrait">

私が使用する2番目のアクティビティは、風景で見られるときに最もよく見えるグラフが含まれているため、両方の方法で見る必要があります。これは基本的に、私のアクティビティが優雅に(私が使用するスレッドやハンドラーを含む)優雅に閉じ、ランドスケープオリエンテーションで画面を埋めるグラフを描画するために再マレーションをすることを確認します。

オリエンテーションの変更をどのように処理したいかを考える必要があります。アプリケーションで最も理にかなっていることは何ですか? Googleを通じてオリエンテーションの変化について語っている多くの良いリソースがあります。

バックグラウンドスレッドであなたが抱えているトラブルは、あなたが破壊されリメイクされた活動に持っているハンドラーによるものだと思います。

他のヒント

デバイスが回転すると、新しいオリエンテーションでアクティビティを効果的に破壊および再作成します。あなたがあなたの活動の一部としてあなたのスレッドを蹴っているなら、それはあなたが見ている行動のいくつかを説明するでしょう。スレッドを2つのアクティビティインスタンス間で生き残る必要がある場合は、単純なスレッドではなくサービスとして実装する必要があります。

これを証明する方法は、ブレークポイントを設定するか、OnCreateメソッドにログを追加することです。これは、アプリが起動し、アクティビティが最初に表示されるときとデバイスの回転の両方でヒットすることがわかります。

携帯電話を傾けるたびに、つまり、ポートレートモードとランドスケープモードの間で変更するたびに、アクティビティが再起動するため、 onCreate() 実行されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top