

Android O preview 4で特定の動作をさせる際、想定と異なる動作が発生しております。

＜発生事象＞  
縦向き固定でアプリを作成しているが、端末を横向きにした状態で画面遷移を行った場合  
一瞬アプリが横向きに表示され、その後縦表示に戻る。

事象の発生するソース(下記参照)と発生しないソースの比較から  
finish()を2回実行していることが原因の1つだと思うのですが  
事象の発生するソースであっても、Android 7まではアプリが横向きに表示されることなく  
縦向き表示で固定されておりました。

次期バージョン(Android8)ではfinish()の挙動がAndroid7以下と異なるのでしょうか。

また、次期バージョンでも横向き表示にならないようにするには、  
ソースをどのように書き換えればよいか、ご教示いただけないでしょうか。

以下、事象の発生に関連すると思われる箇所の情報です。

・開発環境  
Android Studio：1.3  
compileSdkVersion：10  
buildToolsVersion：23.0.0  
minSdkVersion.apiLevel：10  
targetSdkVersion.apiLevel：10

・設定ファイル AndroidManifest.xml（抜粋）

[code]

    <activity
      （略）
      android:screenOrientation="portrait"
      （略）
    /activity>
    
[/code]

・事象の発生するソース（抜粋）

[code]

    finish();
    Intent intent = new Intent(遷移元画面.this, 遷移先画面.class); // 遷移元画面・遷移先画面ともFragmentActivityを継承している
    getApplication().setIntent(intent);
    startActivity(intent);
    overridePendingTransition(R.anim.in_right, R.anim.out_left);
    finish(); // 2回finish()してしまっている
    
[/code]

・事象が発生しないソース（抜粋）

[code]

    // finish()を行わない
    Intent intent = new Intent(遷移元画面.this, 遷移先画面.class); // 遷移元画面・遷移先画面ともFragmentActivityを継承している
    getApplication().setIntent(intent);
    startActivity(intent);
    overridePendingTransition(R.anim.in_down, R.anim.out_no_move); // 事象が発生するソースとはアニメーション設定が異なる
    finish();
    
[/code]

* * *


CC BY-SA 3.0
2017-07-28T10:31:38.520
36747
2017-07-28T13:03:55.320
24626
question
android
Android O Preview4でのfinish()の挙動について


(コメント欄より)

AndroidIssueTrackerにも起票されている既知のバグとのことで現在修正中とのことです。  
<https://issuetracker.google.com/issues/63242891>  
<https://issuetracker.google.com/issues/63720454>

> 次期バージョン(Android8)ではfinish()の挙動がAndroid7以下と異なるのでしょうか。

finish()の挙動に関しては語られていないですが少なくとも＜発生事象＞に記載いただいている挙動に関しては、仕様ではなくバグ扱いとのことで  
AndroidOリリース時には改修されている(と信じて)ます

> また、次期バージョンでも横向き表示にならないようにするには、  
>  ソースをどのように書き換えればよいか、ご教示いただけないでしょうか。

現時点で対症療法を施すとAndroid O本リリース時に副作用が起きる可能性もありますので  
上記IssueをWatchするのが良いかと思います。


CC BY-SA 3.0
2017-07-28T13:03:55.320
36751
2017-07-28T13:03:55.320
19716
36747
answer