活動を続けない

操作を保存しない



「操作を保持しない」-Androidの設定で「アクティビティを保持しない」というフレーズは、このような奇妙な方法で翻訳されています。 また、「ユーザーによる完了後すぐにすべての操作を削除する」という説明は、明確さを増しません。 これは、一番下にあるメニュー「開発者オプション」(開発者オプション)に含まれています。



この設定は非常に簡単に機能し、オンにすると、すべての非アクティブなアクティビティが終了します。 つまり アクティビティAからアクティビティBへの移行後、アクティビティAは破棄されます。 したがって、アプリケーションがアクティビティライフサイクルにどのように適合するかを確認できます



ライフサイクルの詳細には触れたくありませんが、一言で言えば、システムは必要に応じてバックグラウンドアクティビティを強制終了します。 現実には、これはそれほど珍しいことではないので、無視しないでください。 たとえば、誰かから電話がありました。 会話中に、システムは使用したばかりのアプリケーションのアクティビティを強制終了できます。



または、アクティビティを強制終了する最も簡単な方法は、画面を回転させることです(アンドロイドでない場合:configChanges = "keyboardHidden | orientation | screenSize")。 ただし、すべてのアプリケーションが画面の回転をサポートしているわけではありません。 そして、サポートする人は、開発段階でライフサイクルエラーに遭遇するので、問題はないはずです。 2番目の簡単な方法は、デバイスの言語を変更することです。

もちろん、「アクティビティを保持しない」をオンにすることもできます。



「アクティビティを保持しない」でアプリケーションを確認した後、数日間バグを修正しました。 現在、開発中は常にこの設定を有効にする必要があります。 私の主な問題は、アプリケーションでのソーシャルネットワークの正しい接続でした。



Vkontakteにはほとんど問題がなく、SDKを使用するとすべてを正しく作成できますが、まだ小さな問題があります。 つまり、アプリケーションによる承認後、結果はonActivityResultに返されます。 ドキュメントによると、呼び出す必要があります
VKUIHelper.onActivityResult(requestCode, resultCode, data);
      
      





ただし、アプリケーションのアクティビティが破壊された場合、NPEがクラッシュするため、最初に呼び出す必要があります

 VKUIHelper.onResume(this);
      
      





完全に明らかではなく、文書化されていません。 念のため、問題を開始しました。



Facebookには問題がありました。なぜならば、私自身の愚かさで、android-simple-facebookを使用することに決め、その著者は、理解しているように、Androidのライフサイクルを本当に心配していなかったからです。 私はそれを完全に放棄し、公式のFacebook SDKですべてをやり直さなければならず、すべての問題はなくなりました。 おそらく、すべてを1行で修正することは可能ですが、後戻りはできませんでした。



そして、Twitterにはまったく問題はありませんでした。すべてがworksのように機能するからです。 彼らは単に、アプリケーションを介したSDKと承認を持っていません。 WebViewを使用して、昔ながらの方法ですべてを行う必要があります。 一般的に、彼らはすべての中で最も恐ろしい承認を持っています。

はい、そうです、余談です。



PayPal SDKには問題があり、可能な限りクラッシュします。 幸いなことに、誰かがすでに問題を私に持ってきており、おそらく近いうちに修正するでしょう。



他の例



電話にはあまりアプリケーションがなく、正直なところ、私はそれらを見るのが面倒ですが、最近リリースされたhabrアプリケーションをすり抜けることができませんでした。 もちろん、彼から始めましょう。 さて、偶然見つけたPayoneerエラーを追加します:)



ハブラハブル



私はさまざまな画面に出くわし、すでに動揺していました。すべてが正しく書かれていて、私一人で多くの間違いを犯しました。 しかし、いいえ、私はAboutページに行きました:



 Caused by: java.lang.NullPointerException at ru.habrahabr.activity.about.AboutFragment.onAttach(AboutFragment.java:44)
      
      





Payoneer



それほど時間はかかりませんでした。 ログイン画面、パスワードのキーパスに行き、返された- 石膏クラッシュ:



 Caused by: java.lang.NullPointerException at com.payoneer.android.ui.fragment.LoginFragment.initializeOnCreateData(LoginFragment.java:379) at com.payoneer.android.ui.fragment.LoginFragment.onCreate(LoginFragment.java:152)
      
      







クラッシュしないアプリケーションもいくつかありますが、動作が正しくない場合があります。たとえば、開いているフラグメントは保存されず、代わりに、再作成後にアプリケーションのメイン画面が再び表示されます。



PS



「アクティビティを保持しない」設定を使用します。この情報が新しくなり、動作エラーやクラッシュを回避できるようになることを期待しています。

この設定をすぐに知っていれば、Google Playでの多数のレポートを避けることもできると思います。



そうそう、レポートを送った。



All Articles