Intereting Posts
Android: намерение галереи возвращает resultCode == RESULT_CANCELED Android: Датчики Android: как настроить <select> всплывающее диалоговое окно в webview Android – лучшая альтернатива расширяемому списку? Никакой активности не найдено для обработки гео-намерений в эмуляторе Как включить GPS в кодировании android Определить в onActivityResult, если выбрано изображение из галереи или видео, было выбрано – Android Как получить азимут телефона с показаниями компаса и показаниями гироскопа? Звуковой пул не заканчивает воспроизведение всего файла Где указано, как OpenGL ES 2.0 представляет значения плавающей текстуры в шейдере фрагмента? GPS не включен, но isProviderEnabled () возвращает true MyView.getHitRect () возвращает координаты в realation в parent. Как получить их по отношению к бабушке и дедушке? Сходство между холстом HTML5 и холстом Android SearchView и название активности в ActionBar Добавить всплывающую подсказку arrow в DialogFragment

Приложение Android перезагружается при открытии, нажав значок приложения

Я новичок в мире разработки Android, и я создал простое приложение «Hello World». Во-первых, активность запрашивает текст. Когда нажимается кнопка «Перейти», приложение запускает второе действие, отображающее текст ввода.

Если я нажму кнопку HOME, а затем щелкните значок приложения, приложение снова запустит первое действие, но если я нажму кнопку «домой» и нажмите значок на панели «Недавние приложения», он возобновит приложение, в котором я ушел.

Как мне избежать этого?

Мне нужно, чтобы мое приложение возобновилось, даже если щелкнули значок запуска.

MainActivity.java,

package com.example.myfirstandroidapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.EditText; public class MainActivity extends Activity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } /** Called when the user clicks the Send button */ public void sendMessage(View view){ // Do something in response to button Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.txtName); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } } 

DisplayActivity.java,

 package com.example.myfirstandroidapp; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v4.app.NavUtils; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class DisplayMessageActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the message from the intent Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); // Create the text view TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); // Set the text view as the activity layout setContentView(textView); // Show the Up button in the action bar. setupActionBar(); } /** * Set up the {@link android.app.ActionBar}, if the API is available. */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) private void setupActionBar() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { getActionBar().setDisplayHomeAsUpEnabled(true); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.display_message, menu); return true; } @Override public void onDestroy(){ super.onDestroy(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // This ID represents the Home or Up button. In the case of this // activity, the Up button is shown. Use NavUtils to allow users // to navigate up one level in the application structure. For // more details, see the Navigation pattern on Android Design: // // http://developer.android.com/design/patterns/navigation.html#up-vs-back // NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); } } 

activity_main.xml,

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <EditText android:id="@+id/txtName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="70dp" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/btnGo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/txtName" android:layout_alignParentRight="true" android:onClick="sendMessage" android:text="Go!" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/txtName" android:layout_alignParentTop="true" android:layout_marginTop="18dp" android:text="Please input your name:" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout> 

activity_display_message.xml,

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".DisplayMessageActivity" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout> 

AndroidManifest.xml,

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myfirstandroidapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="10" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.myfirstandroidapp.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.myfirstandroidapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstandroidapp.MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstandroidapp.MainActivity" /> </activity> </application> </manifest> 

Проблема:

Я не могу сказать, что это ошибка, но при запуске приложения из панели запуска есть поведение с версиями сборки. Кажется, что вместо возобновления предыдущей активности она добавляет новую активность сверху. В этой теме есть соответствующий отчет об ошибке.

Решение:

Я работаю над этим, закрывая Launcher Activity, если это не корень задачи, в результате предыдущая активность в этой задаче будет возобновлена.

 if (!isTaskRoot()) { finish(); return; } 

Вы можете обратиться к документам разработчика для понимания жизненного цикла Деятельности.

http://developer.android.com/training/basics/activity-lifecycle/index.html

И в вашем случае приложение приостанавливается нажатием кнопки «Главная», и оно возобновляется с того места, где вы ушли, когда вы нажимаете значок приложения в последних приложениях, тогда как нажатие на значок запуска вашего приложения перезапускает ваше приложение, таким образом, начиная с первого действия ,