2016-01-01 2 views
0

У меня есть несколько файлов действий, которые содержат почти тот же код, что и ниже. Ну, я не включил метод onDestroy и finish() во все мои файлы активности, прежде чем двигаться вперед, я хочу быть уверенным в коде, опубликованном ниже.Уничтожьте данные при нажатии кнопки возврата в android

public class Three extends AppCompatActivity { 
    Button forwardB,backwardB,homeB; 
    TextView textView2,textView4,textView5; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.one); 
     //Place advertisement here 
     AdView adView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder() 
      .build(); 
     adView.loadAd(adRequest); 
     // 
     //find widget by Id 
     forwardB = (Button) findViewById(R.id.forwardB); 
     backwardB = (Button) findViewById(R.id.backwardB); 
     homeB = (Button) findViewById(R.id.homeB); 
     textView2= (TextView) findViewById(R.id.textView2); 
     textView4 = (TextView) findViewById(R.id.textView4); 
     textView5 = (TextView) findViewById(R.id.textView5); 
     textView5.setText("3/50"); 
     //set text inside textView3 and textView4 
     textView2.setText("Apfel");textView4.setText("apple"); 
     //set on click listener for forward,backward and home button 
     forwardB.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent i = new Intent(getApplicationContext(), Two.class); 
       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
       startActivity(i); 
       finish(); 
      } 
     }); 
     homeB.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent i = new Intent(getApplicationContext(), MainActivity.class); 
       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
       startActivity(i); 
       finish(); 
      } 
     }); 
     backwardB.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent i = new Intent(getApplicationContext(), Four.class); 
       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
       startActivity(i); 
       finish(); 
      } 
     }); 
    } 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
    } 
} 

После запуска приложения я нашел серьезную проблему с данными, похоже, что андроид сохраняет данные в фоновом режиме. Как я могу избежать этого? enter image description here

Каждый раз, когда я запускаю приложение и проверяю данные, они, кажется, растут.

Ну это мой MainActivity.java:

public class MainActivity extends Activity { 
    Button btnflashcards; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_main); 

     //create widget ids that are usable forw rest of the code 
     btnflashcards = (Button) findViewById(R.id.btnflashcards); 
    } 
    //on flash card button click 
    public void findFlashCards(View v){ 
     Intent i = new Intent(this, FlashCardSelection.class); 
     startActivity(i); 
    } 
    @Override 
    public void onBackPressed() { 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
    } 
} 

ответ

0

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

Используйте это: ActivityManager's clearApplicationUserData() method

Согласно документации это будет:

Допускает приложение для удаления своих собственных данных с диска. Это эквивалентно пользователю, который хочет очистить данные приложения от пользовательского интерфейса настроек устройства. Он удаляет все динамические данные, связанные с приложением , - его личные данные и данные в его частной области на внешнем хранилище - но сам не удаляет установленное приложение, а - любые файлы OBB.

0

Дайте что-то вроде этого выстрела

import java.io.File; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 

public class HelloWorld extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle *) { 
     super.onCreate(*); 
     setContentView(R.layout.main); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 
    } 

    //Fires after the OnStop() state 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     try { 
     trimCache(this); 
     } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
    } 

    public static void trimCache(Context context) { 
     try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
     } catch (Exception e) { 
     // TODO: handle exception 
     } 
    } 

    public static boolean deleteDir(File dir) { 
     if (dir != null && dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i = 0; i < children.length; i++) { 
      boolean success = deleteDir(new File(dir, children[i])); 
      if (!success) { 
       return false; 
      } 
     } 
     } 

     // The directory is now empty so delete it 
     return dir.delete(); 
    } 

} 
+0

К сожалению, эта техника его подводит работал –

Смежные вопросы