Ensure that I2P system vars are set in any Activity that uses I2PBote
Sometimes the Android runtime kills off the Bote process to save memory, and recreates it when the user next opens it. If the user was on an Activity that was not EmailListActivity, then when recreated the I2P system vars would not be set, and the first call to I2PBote.getInstance() would create an instance with invalid paths. This was non-fatal - killing Bote and restarting it would fix the problem - but was bad UX, because from the user's PoV all their emails and data had disappeared.
This commit is contained in:
@@ -2,7 +2,7 @@ package i2p.bote.android;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
class InitActivities {
|
||||
public class InitActivities {
|
||||
private final Context ctx;
|
||||
private final String myDir;
|
||||
|
||||
@@ -12,7 +12,7 @@ class InitActivities {
|
||||
myDir = c.getFilesDir().getAbsolutePath();
|
||||
}
|
||||
|
||||
void initialize() {
|
||||
public void initialize() {
|
||||
// Don't initialize twice
|
||||
if (System.getProperty("i2pbote.initialized", "false").equals("true"))
|
||||
return;
|
||||
|
||||
@@ -7,7 +7,11 @@ public class NetworkInfoActivity extends ActionBarActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setTitle(R.string.compose);
|
||||
setTitle(R.string.network_status);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
@@ -11,6 +11,10 @@ public class NewEmailActivity extends ActionBarActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
setTitle(R.string.compose);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
@@ -39,6 +39,10 @@ public class ViewEmailActivity extends ActionBarActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_view_email);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package i2p.bote.android.addressbook;
|
||||
|
||||
import i2p.bote.android.InitActivities;
|
||||
import i2p.bote.android.R;
|
||||
import i2p.bote.packet.dht.Contact;
|
||||
import android.app.Activity;
|
||||
@@ -16,6 +17,10 @@ public class AddressBookActivity extends ActionBarActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
setTitle(R.string.address_book);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
@@ -3,11 +3,17 @@ package i2p.bote.android.addressbook;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
|
||||
import i2p.bote.android.InitActivities;
|
||||
|
||||
public class EditContactActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package i2p.bote.android.config;
|
||||
|
||||
import i2p.bote.android.InitActivities;
|
||||
import i2p.bote.android.R;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
@@ -12,6 +13,10 @@ public class EditIdentityActivity extends ActionBarActivity implements
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_edit_identity);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package i2p.bote.android.config;
|
||||
|
||||
import i2p.bote.android.InitActivities;
|
||||
import i2p.bote.android.R;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
@@ -13,6 +14,10 @@ public class SetPasswordActivity extends ActionBarActivity implements
|
||||
setTitle(R.string.pref_title_change_password);
|
||||
setContentView(R.layout.activity_set_password);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package i2p.bote.android.config;
|
||||
|
||||
import i2p.bote.Configuration;
|
||||
import i2p.bote.I2PBote;
|
||||
import i2p.bote.android.InitActivities;
|
||||
import i2p.bote.android.R;
|
||||
import i2p.bote.android.util.SummaryEditTextPreference;
|
||||
import i2p.bote.email.EmailIdentity;
|
||||
@@ -60,6 +61,10 @@ public class SettingsActivity extends PreferenceActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
String action = getIntent().getAction();
|
||||
if (action != null) {
|
||||
loadLegacySettings(action);
|
||||
|
||||
@@ -3,11 +3,17 @@ package i2p.bote.android.config;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
|
||||
import i2p.bote.android.InitActivities;
|
||||
|
||||
public class ViewIdentityActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Initialize I2P settings
|
||||
InitActivities init = new InitActivities(this);
|
||||
init.initialize();
|
||||
|
||||
// Enable ActionBar app icon to behave as action to go back
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user