2017-05-16 34 views
0

私は、データの消去が必要なアプリがあります。 私は、これを使用してデータを消去するキャッシュとデータを消去した後にAndroidを再起動するアプリ

((ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData(); 

しかし、アプリを再起動することはできませんしています。私はデータをクリアした後にインテントを追加しようとしました。しかし、アプリはデータを消去した後に閉じるので。私はコードが到達不能だと思う。クリアキャッシュの場合

((ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData(); 
Toast.makeText(MainActivity.this,"Reloading...",Toast.LENGTH_SHORT).show(); 
startActivity(new Intent(MainActivity.this,MainActivity.class)); 
finish(); 
+0

をクリアするため、このコードを使用しますか? –

+0

上記と同じアクティビティからのものです。つまり、MainActivity – Vivek

+0

クリアキャッシュコードは完全に機能しますか? –

答えて

0

再起動アプリのコード

Intent i = getBaseContext().getPackageManager() 
     .getLaunchIntentForPackage(getBaseContext().getPackageName()); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
finish(); 

下に注意してくださいlink

を参照してみてください:あなたは明確なアプリデータアプリを使用している場合はを再起動しません。手動で再起動する必要があります。

1

clearApplicationデータを呼び出した後、アプリケーションは強制終了されます.MainActivityが呼び出されない理由を教えてください。

2

public class ApplicationClass extends Application { 

private static ApplicationClass instance; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    instance = this; 
} 

public static ApplicationClass getInstance() { 
    return instance; 
} 
} 

以下のような新しいApplicationClassがマニフェスト

アンドロイドのアプリケーションタグにApplicationクラスを追加作成します。name = "ApplicationClass"

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:name=".ApplicationClass" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

そして、あなたは明確なキャッシュコードと呼ばれる場所からデータ

Intent intent = new Intent(MainActivity.this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_CLEAR_TASK 
       | Intent.FLAG_ACTIVITY_NEW_TASK); 
     PendingIntent pendingIntent = PendingIntent.getActivity(ApplicationClass.getInstance().getBaseContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT); 
     AlarmManager mgr = (AlarmManager) ApplicationClass.getInstance().getBaseContext().getSystemService(Context.ALARM_SERVICE); 
     mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent); 
     System.exit(2); 
     ((ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData(); 
関連する問題