私のアプリでは、いくつかの要件のためにサービスを使用しています.Activity1からActivity2に切り替えると、数秒間空白の画面が表示されます. いくつかのサービスを持つActivity2では、これは私が使用しているコードです
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(isOnline()){
}else{
alert();
}
dialog = new ProgressDialog(this);
dialog.setCancelable(false);
app_preferences = new AppPreferences(this);
new LongOperation().execute();
setContentView(R.layout.activity_accounts);
}
asynctask を使用して onCreate() からサービスを開始します。new LongOperation().execute();
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
ProgressBar_show();
}
@Override
protected String doInBackground(String... params) {
LoggingAccounts();
return null;
}
@Override
protected void onPostExecute(String result) {
ProgressBar_hide();
}
}
private void LoggingAccounts() {
Account_Added_Log_States();
ArrayList<AccountInfo> _Accounts_list = new ArrayList<AccountInfo>();
accounts_data = new AccountDataSource(this);
accounts_data.open();
_Accounts_list = accounts_data.getAllAccounts();
accounts_data.close();
Log.i(TAG, "No of acc's-" + _Accounts_list.size());
for(AccountInfo acc : _Accounts_list) {
Log.i(TAG, "Acc type " +acc.getAcc_Type());
if(acc.getAcc_Type().equals(UsedStrings.GoogleAccount) && Gtalk_Log_State ) {
/////// service start
final Intent gtalk_intent = new Intent(AccountsActivity.this, GtalkService.class);
gtalk_intent.putExtra("Key", "gtalk service*****");
gtalk_intent.putExtra("user_name", acc.getAcc_Name());
gtalk_intent.putExtra("user_pass", acc.getAcc_Pass());
Thread t = new Thread(){
public void run(){
startService(gtalk_intent);
}
};
t.start();
}
}
}
このように、私はこのアクティビティで 3 つの異なるサービスを使用しています。空白の画面になるアクティビティから切り替えるとき。