package com.tspoon.benchit.sample;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import com.tspoon.benchit.Benchit;
import com.tspoon.benchit.sample.comparisons.ArrayListComparison;
import com.tspoon.benchit.sample.comparisons.Comparison;
import com.tspoon.benchit.sample.comparisons.InternalGetterComparison;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class SampleActivity extends AppCompatActivity {
@InjectView(R.id.benchmarks_list) ListView mList;
@InjectView(R.id.toolbar) Toolbar mToolbar;
private BasicAdapter mAdapter;
private ResultHandler mResultHandler = new ResultHandler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
ButterKnife.inject(this);
setSupportActionBar(mToolbar);
Benchit.setEnabledStats(Benchit.Stat.AVERAGE, Benchit.Stat.STANDARD_DEVIATION, Benchit.Stat.RANGE);
Benchit.setDefaultPrecision(Benchit.Precision.MILLI);
final ArrayList<Comparison> comparisons = getComparisons();
mAdapter = new BasicAdapter<>(this, new ArrayList<String>());
mList.setAdapter(mAdapter);
new Thread(new Runnable() {
@Override
public void run() {
LogCat logCat = new LogCat(mResultHandler);
logCat.start();
for (int i = 0; i < comparisons.size(); i++) {
Comparison c = comparisons.get(i);
c.setup();
c.runComparisons();
}
}
}).start();
}
private ArrayList<Comparison> getComparisons() {
ArrayList<Comparison> items = new ArrayList<Comparison>();
items.add(new ArrayListComparison());
items.add(new InternalGetterComparison());
return items;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_github:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_github))));
return true;
case R.id.action_share:
String message = getString(R.string.text_share, getString(R.string.url_share));
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TITLE, message);
intent.putExtra(Intent.EXTRA_TEXT, message);
startActivity(Intent.createChooser(intent, "Share with..."));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private class ResultHandler extends Handler {
@Override
public void handleMessage(Message msg) {
mAdapter.addItem(msg.obj);
}
}
}