Android開發Tips(2)

歡迎Follow我的GitHub, 關注我的簡書. 其余參考Android目錄.

Android

本文的合集已經編著成書,高級Android開發強化實戰,歡迎各位讀友的建議和指導。在京東即可購買:https://item.jd.com/12385680.html

Android

我會介紹關于Android的一些有趣的小知識點. 上一篇. 第三篇.


1. Dagger2的開發順序

Module -> Component -> Application
首先模塊(Module)創建需要提供的類實例, 其次把模塊添加到組件(Component)中并提供需要注入的類, 最后把組件添加到應用(Application)中并提供接口.

// 模塊
@Module
public class TestAppModule {
    private final Context mContext;

    public TestAppModule(Context context) {
        mContext = context.getApplicationContext();
    }

    // 提供類實例
    @AppScope
    @Provides
    public Context provideAppContext() {
        return mContext;
    }

    @Provides
    public WeatherApiClient provideWeatherApiClient() {
        return new MockWeatherApiClient();
    }
}

// 組件
@AppScope
@Component(modules = TestAppModule.class) // 注冊模塊
public interface TestAppComponent extends AppComponent {
    void inject(MainActivityTest test);
}

// 應用
public class TestWeatherApplication extends WeatherApplication {
    private TestAppComponent mTestAppComponent;

    @Override public void onCreate() {
        super.onCreate();
        mTestAppComponent = DaggerTestAppComponent.builder()
                .testAppModule(new TestAppModule(this))
                .build();
    }

    // 提供組件
    @Override
    public TestAppComponent getAppComponent() {
        return mTestAppComponent;
    }
}

2. JRebel

Android調試工具, 不用編譯, 就可以刷新一些項目修改. 不過功能已經被Android Studio 2.0 代替, 等待2.0正式發版.


3. 數據綁定(DataBinding)

DataBinding實現數據與頁面的分離, 更符合面向對象的編程模式.
布局設置

    <data>
        <variable
            name="weatherData"
            type="clwang.chunyu.me.wcl_espresso_dagger_demo.data.WeatherData"/>
    </data>

            <TextView
                android:id="@+id/temperature"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_marginBottom="@dimen/margin_large"
                android:layout_marginTop="@dimen/margin_xlarge"
                android:text="@{weatherData.temperatureCelsius}"
                android:textAppearance="@style/TextAppearance.AppCompat.Display3"
                tools:text="10°"/>

邏輯設置

private ActivityMainBinding mBinding; // 頁面綁定類
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); // 綁定頁面
mBinding.weatherLayout.setVisibility(View.VISIBLE); // 使用Id
mBinding.setWeatherData(weatherData); // 綁定數據

4. ClassyShark

查看Apk信息的軟件, 功能非常強大, 省去反編譯的步驟, 主要功能:
(1) 在MultiDex中dex的詳細信息.
(2) 使用NativeLibrary的詳細信息.
(3) 類的詳細信息.
(4) 數量統計.

插件

5. CocoaPod安裝

升級Mac系統, 可能會導致Pod命令消失, 需要重新安裝Pod.

sudo gem install -n /usr/local/bin cocoapods

6. LaunchMode

LaunchMode包含四種模式,
(1) standard, 標準模式, 啟動重新創建示例, 默認.
(2) singleTop, 棧頂復用模式, 位于棧頂, 啟動不會被創建, 調用onNewIntent.
(3) singleTask, 棧內復用模式, 存在不會被創建, 調用onNewIntent.
(4) singleInstance, 單實例模式, 單獨位于一個任務棧內, 復用.


7. TextView的標準字體

樣式

style="@style/TextAppearance.AppCompat.Display4"
style="@style/TextAppearance.AppCompat.Display3"
style="@style/TextAppearance.AppCompat.Display2"
style="@style/TextAppearance.AppCompat.Display1"
style="@style/TextAppearance.AppCompat.Headline"
style="@style/TextAppearance.AppCompat.Title"
style="@style/TextAppearance.AppCompat.Subhead"
style="@style/TextAppearance.AppCompat.Body2"
style="@style/TextAppearance.AppCompat.Body1"
style="@style/TextAppearance.AppCompat.Caption"
style="@style/TextAppearance.AppCompat.Button"

顯示

字號

8. 自動生成DbHelper的腳本

下載地址
安裝Jinja2.

pip install Jinja2

設置數據

CLASS Repo
String Id
String Name
String Description
String Owner
ENDCLASS

下載代碼庫. 生成代碼.

python sql_lite_helper.py -f ~/Desktop/Repo -n SampleGenerate -p me.chunyu -a clwang

9. Gson的序列化參數

有些情況下, Json名稱與變量不同, 需要指定.

@SerializedName("avatar_url") private String avatarUrl;

10. Proguard保留庫

最簡潔的方式是全部保留. 去除警告dontwarn, 保留類keep class.

# 在線更新
-dontwarn clwang.chunyu.me.**
-keep class clwang.chunyu.me.**{*;}

OK, That's all! Enjoy It!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容