Skip to content

Commit

Permalink
GitBook: [master] 8 pages and 13 assets modified
Browse files Browse the repository at this point in the history
  • Loading branch information
yemreak authored and gitbook-bot committed Jan 7, 2020
1 parent 7517488 commit dfd0685
Show file tree
Hide file tree
Showing 21 changed files with 136 additions and 91 deletions.
Binary file added .gitbook/assets/app_bar_menus2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/appbar_menus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/connect_internet_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/dao_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/entity_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/menus_types.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/room_livedata_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/room_repo_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/room_vh_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/roomdb_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/roomdb_schema.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/sqlite_hand.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/syncronized.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
* [🌄 Arkaplan'da Çalışma](arkaplan/README.md)
* [🌠 MultiThreading](arkaplan/multithreading.md)
* [💫 Asenkron İşlemler](arkaplan/asynctask-ve-asynctaskloader.md)
* [🔁 AsyncTask](arkaplan/asynctask.md)
* [🪐 Servisler](arkaplan/android-servisleri.md)
* [🌞 Foreground Service](arkaplan/foreground-service.md)
* [⏰ Alarm](arkaplan/alarm.md)
Expand Down
87 changes: 2 additions & 85 deletions arkaplan/asynctask-ve-asynctaskloader.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,95 +35,12 @@ Android'teki tüm görüntü işlemlerinin yapıldı alandır.
* UI Thread sadece görsel işlemler için kullanılmalıdır
* Tüm işlemler 16ms'den kısa bir sürede tamamlanmalıdır

![](../.gitbook/assets/async_task_ui_thread.png)

{% hint style="danger" %}
Yaklaşık olarak 5s'den uzun süren işlemler "[application not responding](http://developer.android.com/guide/practices/responsiveness.html)" \(ANR\) diyaloğunu oluşturur ve kullanıcı bunu görmesi durumunda uygulamayı kapatıp, siler 😥
{% endhint %}

## 🔁 AsyncTask

Verilen işlemi arkaplanda, sistemi bloklamadan tamamlar.

* Yapılandırma ayarlarından etkilenir, işlem yok edilip yeniden başlatılır
* Telefonu döndürme vs gibi işlemler yapılandırma ayarlarını değiştirir
* Aynı işlemin çokça yapılması RAM tüketimini arttırır
* Uygulama kapatıldığında cancel\(\) metodu çalıştırılmadığı sürece çalışmaya devam eder

{% hint style="warning" %}
Önemli ve kritik işlemler için `AsyncTaskLoader` tercih edilir
{% endhint %}

{% tabs %}
{% tab title="🎈 Kullanım" %}
| 💠 Metot | 📜 Açıklama |
| :--- | :--- |
| `onPreExecute()` | İşlem tamamlanmadan önce ara ara çağrılan metottur, genellikle % dolum bilgisi vermek için kullanılır |
| `doInBackground(Params...)` | `onPreExecute()` metodu bittiği an çalışır, arkaplan işlemlerini yapan kısımdır. `publishProgress()` metodu ile değişikleri UI Thread'e aktarır. Bittiğinde `onPostExecure()` metoduna sonucu aktarır. |
| `onProgressUpdate(Progress...)` | `publishProgress()` metodundan sonra çalışır, genellikle raporlama veye ilerleme adımlarını kullanıcıya göstermek için kullanılır |
| `onPostExecute(Result)` | Arkaplan işlemi tamamlandığında sonuç buraya aktarılır, UI Thread bu metot üzerinden sonucu kullanır. |

{% hint style="warning" %}
`onProgressUpdate` metodunda tüm adımları ele alırsanız, asenkron çalışma yapısı bozulur ve senkronize olarak çalışır
{% endhint %}
{% endtab %}

{% tab title="🧱 Prototip" %}
```java
public class MyAsyncTask extends AsyncTask <String, Void, Bitmap>{}
```

* `String` değişkeni, `doInBackground` metoduna aktarılacak verilerdir
* `Void` yapısı, `publishProgress` ve `onProgressUpdate` metotlarının kullanılmayacağını belirtir
* `Bitmap` tipi de, `onPostExecute` ile aktarılan işlem sonucunun tipini belirtir

{% hint style="warning" %}
Son iki parametre \(`Void` ve `Bitmap`\) dışarıdan verilmez, sınıf içi parametrelerdir
{% endhint %}
{% endtab %}

{% tab title="❌ İşlemi İptal Etme" %}
İşlemi istediğin zaman [`cancel()`](https://developer.android.com/reference/android/os/AsyncTask.html#cancel%28boolean%29) metodu ile iptal edebilirsin

* [`cancel()`](https://developer.android.com/reference/android/os/AsyncTask.html#cancel%28boolean%29) metodu işlem tamamlanmışsa `False` döndürür
* Biten işlemi iptal edemezsin 🙄
* İşlemin iptal edilme durumunu `doInBackground` metodunda `isCancalled()` metodu kontrol etmemiz gerekmektedir
* İşlem iptal edildiğin `doInBackground` metodundan sonra `onPostExecute` yerine [`onCancelled(Object)`](https://developer.android.com/reference/android/os/AsyncTask.html#onCancelled%28Result%29) metodu döndürülür

{% hint style="info" %}
Varsayılan olarak [`onCancelled(Object)`](https://developer.android.com/reference/android/os/AsyncTask.html#onCancelled%28Result%29) metodu `onCancelled()` metodunu çağırır, sonuç görmezden gelinir.
{% endhint %}
{% endtab %}

{% tab title="👨‍💻 Kod" %}
```java
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}

protected void onProgressUpdate(Integer... progress) {
// 0. eleman en son adımı belirtir. (FIFO)
setProgressPercent(progress[0]);
}

protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}

// UI Thread'te kullanımı
new DownloadFilesTask().execute(url1, url2, url3);
```
{% endtab %}
{% endtabs %}

## 🔗 Harici Bağlantılar

{% embed url="https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/unit-3-working-in-the-background/lesson-7-background-tasks/7-1-c-asynctask-and-asynctaskloader/7-1-c-asynctask-and-asynctaskloader.html" %}
Expand Down
89 changes: 89 additions & 0 deletions arkaplan/asynctask.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# 🔁 AsyncTask

## 🎈 Ne için Kullanılır

* 🕊️ Verilen işlemi arka planda, sistemi işlerini engellemeden tamamlar.
* 🐞 Yapılandırma ayarlarından etkilenir, işlem yok edilip yeniden başlatılır
* 💫 Telefonu döndürme vs gibi işlemler yapılandırma ayarlarını değiştirir
* 🗑️ Aynı işlemin çokça yapılması RAM tüketimini arttırır
* 🌃 Uygulama kapatıldığında `cancel()` metodu çalıştırılmadığı sürece çalışmaya devam eder

{% hint style="warning" %}
Önemli ve kritik işlemler için `AsyncTaskLoader` tercih edilir
{% endhint %}

## 🐣 Kullanım Metotları

![](../.gitbook/assets/async_task_worker_thread.png)

| 💠 Metot | 📜 Açıklama |
| :--- | :--- |
| `onPreExecute()` | İşlem tamamlanmadan önce ara ara çağrılan metottur, genellikle % dolum bilgisi vermek için kullanılır |
| `doInBackground(Params...)` | `onPreExecute()` metodu bittiği an çalışır, arkaplan işlemlerini yapan kısımdır. `publishProgress()` metodu ile değişikleri UI Thread'e aktarır. Bittiğinde `onPostExecure()` metoduna sonucu aktarır. |
| `onProgressUpdate(Progress...)` | `publishProgress()` metodundan sonra çalışır, genellikle raporlama veye ilerleme adımlarını kullanıcıya göstermek için kullanılır |
| `onPostExecute(Result)` | Arkaplan işlemi tamamlandığında sonuç buraya aktarılır, UI Thread bu metot üzerinden sonucu kullanır. |

{% hint style="warning" %}
`onProgressUpdate` metodunda tüm adımları ele alırsanız, asenkron çalışma yapısı bozulur ve senkronize olarak çalışır
{% endhint %}

## 🧱 Prototip

![](../.gitbook/assets/async_task.png)

```java
public class MyAsyncTask extends AsyncTask <String, Void, Bitmap>{}
```

* 🏹`String` değişkeni, `doInBackground` metoduna aktarılacak verilerdir
* 🌌`Void` yapısı, `publishProgress` ve `onProgressUpdate` metotlarının kullanılmayacağını belirtir
* 🔸`Bitmap` tipi de, `onPostExecute` ile aktarılan işlem sonucunun tipini belirtir

![](../.gitbook/assets/async_task_prototype.png)

{% hint style="warning" %}
Son iki parametre \(`Void` ve `Bitmap`\) dışarıdan verilmez, sınıf içi parametrelerdir
{% endhint %}

## ❌ İşlemi İptal Etme

* 🚫 İşlemi istediğin zaman [`cancel()`](https://developer.android.com/reference/android/os/AsyncTask.html#cancel%28boolean%29) metodu ile iptal edebilirsin
* 🔙 [`cancel()`](https://developer.android.com/reference/android/os/AsyncTask.html#cancel%28boolean%29) metodu işlem tamamlanmışsa `False` döndürür
* 🙄 Biten işlemi iptal edemezsin
* 👮‍♂️ İşlemin iptal edilme durumunu `doInBackground` metodunda `isCancalled()` metodu kontrol etmemiz gerekmektedir
* ❣️ İşlem iptal edildiğin `doInBackground` metodundan sonra `onPostExecute` yerine [`onCancelled(Object)`](https://developer.android.com/reference/android/os/AsyncTask.html#onCancelled%28Result%29) metodu döndürülür

{% hint style="info" %}
Varsayılan olarak [`onCancelled(Object)`](https://developer.android.com/reference/android/os/AsyncTask.html#onCancelled%28Result%29) metodu `onCancelled()` metodunu çağırır, sonuç görmezden gelinir.
{% endhint %}

## 👨‍💻 Kod

```java
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}

protected void onProgressUpdate(Integer... progress) {
// 0. eleman en son adımı belirtir. (FIFO)
setProgressPercent(progress[0]);
}

protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}

// UI Thread'te kullanımı
new DownloadFilesTask().execute(url1, url2, url3);
```

12 changes: 11 additions & 1 deletion gui/component-isimleri.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: Component olarak adlandırılan Android bileşenlerinin isimleri ye

## 🔂 Inputlar

![ User input controls](https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/images/4-2-c-input-controls/user_input_controls_composite.png)
![](../.gitbook/assets/name_inputs.png)

In the figure above:

Expand All @@ -19,11 +19,21 @@ In the figure above:

## 🍢 Seek Bar

![](../.gitbook/assets/name_seekbar.png)

## ⚫ Progress Bar

![](../.gitbook/assets/name_progressbar.png)

## 🔀 Navigation Bar

![](../.gitbook/assets/name_navbar.png)

## 🕎 Navigation View

![](../.gitbook/assets/name_navview.png)

## 💬 Alert Dialog

![](../.gitbook/assets/name_alert_dialog.png)

6 changes: 6 additions & 0 deletions gui/menu.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,24 @@
* 🍢 Contextual Action Bar
* 🎈 Popup

![](../.gitbook/assets/menus_types.png)

## ⚙️ App bar ve Option Menu

1. 🏹 Navigation
2. 🔤 Title
3. 🏃‍♂️ Actions
4. 🗃️ Overflow

![](../.gitbook/assets/appbar_menus.png)

1. 🍢 App bar
2. 🏃‍♂️ Action icons
3. 🎛️ Overflow Button
4. 🗃️ Overflow menu

![](../.gitbook/assets/app_bar_menus2.png)

## 📦 Bağımlılıkları Dahil Etme

```groovy
Expand Down
2 changes: 2 additions & 0 deletions haberlesme/internete-baglanma.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## ✍ El Notlarım

![](../.gitbook/assets/connect_internet_hand.png)

## 👮‍♂️ Gerekli İzinlerin Alınması

* 📃 `AndroidManifest.xml` dosyası üzerinden internet izni alınmalıdır
Expand Down
16 changes: 16 additions & 0 deletions veriler/room-database.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,17 @@ dependencies {

## 🧱 Temel Yapı

![](../.gitbook/assets/roomdb_schema.png)

## ⭐ Entity Yapısı

* 🧱 DB'ye aktarılacak sütun isimlerini temsil ederler
* 🏷️ [Annotation](https://www.geeksforgeeks.org/annotations-in-java/) yapısı ile özellikleri belirlenir
* 🔸 Tablodaki sütün isimleri entity üzerindeki değişkenlerle temsil edilir
* 👮‍♂️ **Primary key** ve **Entity** etiketini eklemek zorunludur

![](../.gitbook/assets/entity_hand.png)

```java
@Entity(tableName = "word_table")
public class Word {
Expand Down Expand Up @@ -98,6 +102,8 @@ public class Word {



![](../.gitbook/assets/dao_hand.png)

```java
@Dao
public interface WordDao {
Expand Down Expand Up @@ -139,6 +145,8 @@ public interface WordDao {
* `version` alanında db'nin en son sürümünü belirtin
* 🐛 Versiyon geçişleri arasındaki sorunları engellemek için `fallbackToDestructiveMigration()` özelliği eklenir

![](../.gitbook/assets/roomdb_hand.png)

```java
@Database(entities = {Word.class}, version = 1)
public abstract class WordRoomDatabase extends RoomDatabase {
Expand Down Expand Up @@ -177,6 +185,8 @@ public abstract class WordRoomDatabase extends RoomDatabase {
* Birden fazla Thread gelmesi durumunda engellemek için **synchronized** anahtar kelimesi kullanılır
* ✨ Gereksiz Thread engelinden sakınmak için, synchronized yapısı içerisinde tekrardan **if kontrolü** yapılmalıdır

![](../.gitbook/assets/syncronized.png)

{% hint style="info" %}
👀 Detaylar için [Multi-threading](../arkaplan/multithreading.md) alanına bakabilirsin.
{% endhint %}
Expand All @@ -190,6 +200,8 @@ public abstract class WordRoomDatabase extends RoomDatabase {
* 🦄 Verilerin aktarımı bir defaya mahsus **Constructor** üzerinde yapılır
* 🌠 Verilerin aktarılması **asenkron** olması gerektiğinden [AsyncTask](../arkaplan/asynctask-ve-asynctaskloader.md) yapısı kullanılır

![](../.gitbook/assets/room_repo_hand.png)

```java
public class WordRepository {

Expand Down Expand Up @@ -238,6 +250,8 @@ public class WordRepository {
* 🥚 Context verisi miras alınmalıdır
* 📝 UI ile alakalı bilgilerin kaydı ile uğraşır

![](../.gitbook/assets/room_vh_hand.png)

```java
public class WordViewModel extends AndroidViewModel {

Expand Down Expand Up @@ -268,6 +282,8 @@ public class WordViewModel extends AndroidViewModel {
* [🛳️ DAO](room-database.md#dao-yapisi)
* [🛍️ ViewHolder](room-database.md#viewholder)

![](../.gitbook/assets/room_livedata_hand.png)

```java
wordsViewModel.getAllNews().observe(
this,
Expand Down
14 changes: 9 additions & 5 deletions veriler/sqlite.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ description: Android üzerinde SQLite ile veri tabanı oluşturma

# 🗃️ SQLite

### SQLite Giriş Temelleri
## ✍ Yazılı Notlarım

![](../.gitbook/assets/sqlite_hand.png)

## 🧱 Temel İşlemler

İlk olarak try - catch yapısı kurulur ve olası sorunda programın kapanması engellenir.

Expand All @@ -19,7 +23,7 @@ catch (e : Exception){

> Bütün kodları `...` olan yere yazacağız. Artık başlayabiliriz.
### SQLite ile Basit DB Oluşturma
## 🏗️ Basit DB Oluşturma

`database = openOrCreateDatabase("Datas", Context.MODE_PRIVATE, null)`

Expand All @@ -29,7 +33,7 @@ catch (e : Exception){
* \(Context.MODE yazıp ALT+ SPACE yaparsanız detaylar çıkacaktır karşınıza\)
* null : CursorFactory

### SQLite DB Oluşturma Kodları
## 👨‍💻 DB Oluşturma Kodları

```text
try {
Expand All @@ -47,7 +51,7 @@ try {
* `VARCHAR` char
* `INT` Int

### SQLite DB İşlemleri Değiştirme
## 👨‍🔧 DB İşlemleri Değiştirme

Temel yapısı `database.execSQL("...")` şeklindedir.

Expand All @@ -72,7 +76,7 @@ database.execSQL("SELECT FROM datas WHERE name LIKE '%u%") // içinde 'u' harfi
* `'Yunus'` VARCHAR \(string\) tipindeki veri
* `21` INT\(2\) \(Int\) tipindeki veri

### SQLite DB Okuma
## 👀 DB Okuma

```text
if (database != null) {
Expand Down

0 comments on commit dfd0685

Please sign in to comment.