NativeScript / NativeScript/android

App killed when starting a foreground activity on some devices

オープン
#1,605 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
C++
スター
563
フォーク
144
平均マージ
10時間 46分
マージ済み PR(30日)
14

説明

Environment
Provide version numbers for the following components (information can be retrieved by running tns info in your project folder or by inspecting the package.json of the project):

  • CLI: 6.5.0
  • Cross-platform modules: 6.5.1
  • Android Runtime: 6.4.1
  • Plugin(s):
    @nstudio/nativescript-checkbox
    nativescript-bitmap-factory": "^1.8.1",
    nativescript-bluetooth
    nativescript-camera
    nativescript-drawingpad
    nativescript-feedback
    nativescript-fonticon
    nativescript-geolocation
    nativescript-iqkeyboardmanager
    nativescript-localize
    nativescript-modal-datetimepicker
    nativescript-print-zebra
    nativescript-printer
    nativescript-sqlite
    nativescript-sqlite-commercial
    nativescript-sqlite-encrypted
    nativescript-toasty
    nativescript-zip

Describe the bug
On some devices, at least on Huawei Mediapad T5, when I start a new activity that goes on the foreground, the NativeScript activity gets killed. When I go back, the NS activity restarts.
After some investigation, I concluded that it's a battery management issue. Android always kills app activities put in the background to minimize battery usage, but on some devices (mainly Huawei from what I've found) this mechanism is very aggressive and kills the activity immediately after it goes in the background. The Android activityDestroyed event and NS exit event are not called.

I have two scenarios:

  • Opening the camera with nativescript-camera plugin. The NS activity is killed but the camera still works, allowing me to retrieve the photo uri on restart.
  • Printing with the system service PrintManager. In this case, when the NS activity is killed the print tool closes too. To the user, it looks like a crash.

My goal is to prevent the perceived crash at least on the second scenario. Is there a way to release enough resources when the activity is paused?

Allowing the app to ignore battery optimization and managing manually launch/app launch doesn't solve the issue.

To Reproduce
Launch the nativescript-camera demo on an affected device.

Expected behavior
The NS activity is not killed after it starts a new activity.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

NativeScript のカメラデモから始め、影響を受ける Huawei Mediapad T5 でライフサイクルを再現します。カメラまたは Android PrintManager を起動する際の activityDestroyed イベントと NativeScript の終了イベントを追跡し、その結果を、フォアグラウンドアクティビティの開始後も NativeScript アクティビティが使用可能なままであるという期待される動作と比較します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
android
領域
mobile
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
30/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。