This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<manifest | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.package.here"> | |
<application | |
android:name="com.package.here.MyApplication" | |
android:allowBackup="true" | |
android:icon="@drawable/ic_launcher" | |
android:label="@string/app_name" | |
android:theme="@style/AppTheme"> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.squareup.leakcanary.AnalysisResult; | |
import com.squareup.leakcanary.DisplayLeakService; | |
import com.squareup.leakcanary.HeapDump; | |
import android.util.Log; | |
import okhttp3.MediaType; | |
import okhttp3.MultipartBody; | |
import okhttp3.RequestBody; | |
import retrofit2.Call; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Imagine that you, and your new Pixel device, have gone back in time to 1980. | |
Lucky for you, your friend Marty mcFly, the developer of "WatchStarWars" application, and you're just about to watch "Episode V", you're about to watch it for the 1st time. | |
WatchStarWars app has a single activity, WatchStarwarsActivity. | |
It's an activity with one button "Say Something", that when clicked, logs an interesting fact about the movie to the log, a fact that, if you haven't watched Episode V, you might find to be a spoiler. | |
In its OnCreate method, WatchStarwarsActivity posts-delayed a "Finished Watching Starwars" log message for x milliseconds. | |
Marty loves technology. He uses Timber for injecting a testable log into the activity with Dagger. He is also a very pragmatic developer - he tests his app with Espresso, with this scenario: | |
Open the activity |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.util.Log; | |
public class ClassWithInnerObject { | |
private final InnerObject innerObject; | |
public ClassWithInnerObject() { | |
innerObject = new InnerObject(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class BackgroundService extends Service { | |
@Override public int onStartCommand(Intent intent, int i, int i1) { | |
if (observer == null) { | |
observer = new OrdersObserver(new Handler()); | |
getContext().getContentResolver() | |
.registerContentObserver(KolGeneContract.OrderEntry.CONTENT_URI, true, observer); | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class KolGeneProvider extends ContentProvider { | |
//... | |
@Nullable @Override public Uri insert(@NonNull Uri uri, ContentValues values) { | |
//open DB for write | |
final SQLiteDatabase db = mOpenHelper.getWritableDatabase(); | |
//match URI to action. | |
final int match = sUriMatcher.match(uri); | |
Uri returnUri; | |
switch (match) { | |
//case of creating order. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class NewOrderPresenter extends BasePresenter<NewOrderView> { | |
//... | |
private int insertOrder(Order order) { | |
//turn order to ContentValues object (used by SQL to insert values to Table) | |
ContentValues values = order.createLocalOrder(order); | |
//call resolver to insert data to the Order table | |
Uri uri = context.getContentResolver().insert(KolGeneContract.OrderEntry.CONTENT_URI, values); | |
//get Id for order. | |
if (uri != null) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SendOrderService extends IntentService { | |
@Override protected void onHandleIntent(Intent intent) { | |
int orderId = intent.getIntExtra(ORDER_ID, 0); | |
if (orderId == 0 || orderId == -1) { | |
return; | |
} | |
Cursor c = null; | |
try { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SyncOrderService extends GcmTaskService { | |
//... | |
public static void scheduleOrderSending(Context context, int id) { | |
GcmNetworkManager manager = GcmNetworkManager.getInstance(context); | |
Bundle bundle = new Bundle(); | |
bundle.putInt(SyncOrderService.ORDER_ID, id); | |
OneoffTask task = new OneoffTask.Builder().setService(SyncOrderService.class) | |
.setTag(SyncOrderService.getTaskTag(id)) | |
.setExecutionWindow(0L, 30L) | |
.setExtras(bundle) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MainActivity extends LifecycleActivity implements Observer<List<StarWarsMovie>> { | |
@BindView(R.id.lv_am_movie_list) ListView listView; | |
@BindView(R.id.pb_am_loading) ProgressBar progressBar; | |
private MainViewModel mainViewModel; | |
@Override protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class); |
OlderNewer