9

複雑なサービスとアクティビティ UI の両方を含むアプリがあります。アプリは、サービスを介して WIFI 経由で相互に通信する複数のデバイスで実行されます。

アプリはプロトタイプ/開発中なので、アプリを強制終了して再起動する「強制再起動」のサポートを追加したいと考えています。ユースケースによっては、多くの共有 UI が機能しなくなっており、ボタンをタッチしてアプリを完全に再起動できれば、テスト中 (私は複数のデバイスを持っています) に簡単になります。

それで、誰にも次の方法に関する提案はありますか?

1)アプリ内から、自分のアプリを強制的に閉じる/停止/強制終了します。

2)アプリを閉じる/停止する/強制終了する前にOSにアプリを起動するように指示するタイマー/インテントを設定します。

ヒントをいただければ幸いです。ありがとうございました。

4

7 に答える 7

7

アプリを再起動するには、次のコードを使用します。

            Intent mStartActivity = new Intent(HomeActivity.this, SplashScreen.class);
            int mPendingIntentId = 123456;
            PendingIntent mPendingIntent = PendingIntent.getActivity(HomeActivity.this, mPendingIntentId, mStartActivity,
                    PendingIntent.FLAG_CANCEL_CURRENT);
            AlarmManager mgr = (AlarmManager) HomeActivity.this.getSystemService(Context.ALARM_SERVICE);
            mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
            System.exit(0);
于 2016-03-04T14:01:42.613 に答える
1

アプリケーションを再起動するには、以下のコードを試してください。

Intent i = getBaseContext().getPackageManager()
             .getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
于 2016-10-18T07:20:53.903 に答える
0

いいえ、できません。オペレーティング システムは、いつアプリケーションを強制終了するかを決定します。あなたのアプリは、本当に死んでいたか、単に隠されていたかに関わらず、生き返ることができます。

これは不便ですが、プラットフォームはそのように機能します。アクティビティを管理することで、同じユーザー向けの効果を生み出すことができます。これは、削除して復元できます。

于 2013-07-22T19:00:59.950 に答える
0

これを行うためのより公式な方法があるかもしれませんが、これが私がこれを達成する方法です。

たとえば、現在参加しているアクティビティ (FirstActivity と呼びます) と、別の「ヘルパー」アクティビティ (SecondActivity と呼びます) の 2 つのアクティビティしかないふりをします。

最初のもの (再起動したいもの) には、アプリの再起動を開始するボタンがあります。

restartButton.setOnClickListener(new OnClickListener(){
        @Override
        onClick(View v){
          //when clicked it starts the helper activity and closes the one you're in
          startActivity(new Intent(this, SecondActivity.class));
          finish(); //or you could use FirstActivity.onDestroy(); if you want it completely dead
        }
});

2 番目のアクティビティ: 全体的な目的は、基本的にアプリからアプリを再起動できるようにすることです (他のすべてを閉じてから、この中で再起動します)。

Class SecondActivity extends Activity{
        @Override
        onCreate(Bundle savedInstanceState){
                ...
                //it restarts the old activity so it's new and ends this one
                startActivity(new Intent(this, FirstActivity.class));
                finish(); //or you could use SecondActivity.onDestroy(); if you want it
        }

}

これにより、最初のアクティビティが完全に再開されます。それがあなたが望むほど徹底しているかどうかはわかりませんが、この種のことを行う別の方法は本当にありません.

于 2013-07-22T19:07:21.270 に答える