parent
432b8773b1
commit
312d6e85d5
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,229 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectCodeStyleSettingsManager"> |
||||
<option name="PER_PROJECT_SETTINGS"> |
||||
<value> |
||||
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" /> |
||||
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" /> |
||||
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND"> |
||||
<value /> |
||||
</option> |
||||
<option name="IMPORT_LAYOUT_TABLE"> |
||||
<value> |
||||
<package name="android" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="com" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="junit" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="net" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="org" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="java" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="javax" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="" withSubpackages="true" static="false" /> |
||||
<emptyLine /> |
||||
<package name="" withSubpackages="true" static="true" /> |
||||
<emptyLine /> |
||||
</value> |
||||
</option> |
||||
<option name="RIGHT_MARGIN" value="100" /> |
||||
<AndroidXmlCodeStyleSettings> |
||||
<option name="USE_CUSTOM_SETTINGS" value="true" /> |
||||
</AndroidXmlCodeStyleSettings> |
||||
<Objective-C-extensions> |
||||
<option name="GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES" value="ASK" /> |
||||
<option name="RELEASE_STYLE" value="IVAR" /> |
||||
<option name="TYPE_QUALIFIERS_PLACEMENT" value="BEFORE" /> |
||||
<file> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" /> |
||||
</file> |
||||
<class> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" /> |
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" /> |
||||
</class> |
||||
<extensions> |
||||
<pair source="cpp" header="h" /> |
||||
<pair source="c" header="h" /> |
||||
</extensions> |
||||
</Objective-C-extensions> |
||||
<XML> |
||||
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" /> |
||||
</XML> |
||||
<codeStyleSettings language="XML"> |
||||
<option name="FORCE_REARRANGE_MODE" value="1" /> |
||||
<indentOptions> |
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" /> |
||||
</indentOptions> |
||||
<arrangement> |
||||
<rules> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>xmlns:android</NAME> |
||||
<XML_NAMESPACE>^$</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>xmlns:.*</NAME> |
||||
<XML_NAMESPACE>^$</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
<order>BY_NAME</order> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*:id</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*:name</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>name</NAME> |
||||
<XML_NAMESPACE>^$</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>style</NAME> |
||||
<XML_NAMESPACE>^$</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*</NAME> |
||||
<XML_NAMESPACE>^$</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
<order>BY_NAME</order> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*:layout_width</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*:layout_height</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*:layout_.*</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
<order>BY_NAME</order> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*:width</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
<order>BY_NAME</order> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*:height</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
<order>BY_NAME</order> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*</NAME> |
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
<order>BY_NAME</order> |
||||
</rule> |
||||
</section> |
||||
<section> |
||||
<rule> |
||||
<match> |
||||
<AND> |
||||
<NAME>.*</NAME> |
||||
<XML_NAMESPACE>.*</XML_NAMESPACE> |
||||
</AND> |
||||
</match> |
||||
<order>BY_NAME</order> |
||||
</rule> |
||||
</section> |
||||
</rules> |
||||
</arrangement> |
||||
</codeStyleSettings> |
||||
</value> |
||||
</option> |
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="aria" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,6 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="VcsDirectoryMappings"> |
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" /> |
||||
</component> |
||||
</project> |
@ -1,90 +1,38 @@ |
||||
package com.arialyy.simple.activity; |
||||
|
||||
import android.content.BroadcastReceiver; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.os.Bundle; |
||||
import android.support.v7.widget.LinearLayoutManager; |
||||
import android.support.v7.widget.RecyclerView; |
||||
|
||||
import com.arialyy.downloadutil.core.DownloadManager; |
||||
import com.arialyy.downloadutil.entity.DownloadEntity; |
||||
import com.arialyy.frame.util.show.L; |
||||
import android.support.v7.widget.Toolbar; |
||||
import android.view.View; |
||||
import butterknife.Bind; |
||||
import com.arialyy.simple.R; |
||||
import com.arialyy.simple.adapter.DownloadAdapter; |
||||
import com.arialyy.simple.base.BaseActivity; |
||||
import com.arialyy.simple.databinding.ActivityMainBinding; |
||||
import com.arialyy.simple.module.DownloadModule; |
||||
|
||||
import butterknife.Bind; |
||||
|
||||
/** |
||||
* Created by Lyy on 2016/9/27. |
||||
* Created by Lyy on 2016/10/13. |
||||
*/ |
||||
public class MainActivity extends BaseActivity<ActivityMainBinding> { |
||||
@Bind(R.id.list) RecyclerView mList; |
||||
DownloadAdapter mAdapter; |
||||
|
||||
@Override protected int setLayoutId() { |
||||
return R.layout.activity_main; |
||||
} |
||||
|
||||
@Override protected void init(Bundle savedInstanceState) { |
||||
super.init(savedInstanceState); |
||||
mAdapter = new DownloadAdapter(this, getModule(DownloadModule.class).getDownloadData()); |
||||
mList.setLayoutManager(new LinearLayoutManager(this)); |
||||
mList.setAdapter(mAdapter); |
||||
} |
||||
|
||||
|
||||
private BroadcastReceiver mReceiver = new BroadcastReceiver() { |
||||
long len = 0; |
||||
|
||||
@Override public void onReceive(Context context, Intent intent) { |
||||
String action = intent.getAction(); |
||||
DownloadEntity entity = intent.getParcelableExtra(DownloadManager.ENTITY); |
||||
switch (action) { |
||||
case DownloadManager.ACTION_PRE: |
||||
len = entity.getFileSize(); |
||||
L.d(TAG, "download pre"); |
||||
break; |
||||
case DownloadManager.ACTION_START: |
||||
L.d(TAG, "download start"); |
||||
break; |
||||
case DownloadManager.ACTION_RESUME: |
||||
L.d(TAG, "download resume"); |
||||
long location = intent.getLongExtra(DownloadManager.CURRENT_LOCATION, 1); |
||||
mAdapter.updateState(entity); |
||||
break; |
||||
case DownloadManager.ACTION_RUNNING: |
||||
long current = intent.getLongExtra(DownloadManager.CURRENT_LOCATION, 0); |
||||
mAdapter.setProgress(entity.getDownloadUrl(), current); |
||||
break; |
||||
case DownloadManager.ACTION_STOP: |
||||
L.d(TAG, "download stop"); |
||||
mAdapter.updateState(entity); |
||||
break; |
||||
case DownloadManager.ACTION_COMPLETE: |
||||
L.d(TAG, "download complete"); |
||||
mAdapter.updateState(entity); |
||||
break; |
||||
case DownloadManager.ACTION_CANCEL: |
||||
L.d(TAG, "download cancel"); |
||||
break; |
||||
case DownloadManager.ACTION_FAIL: |
||||
L.d(TAG, "download fail"); |
||||
break; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
@Override protected void onResume() { |
||||
super.onResume(); |
||||
registerReceiver(mReceiver, getModule(DownloadModule.class).getDownloadFilter()); |
||||
} |
||||
|
||||
@Override protected void onDestroy() { |
||||
super.onDestroy(); |
||||
unregisterReceiver(mReceiver); |
||||
@Bind(R.id.toolbar) Toolbar mBar; |
||||
|
||||
@Override protected int setLayoutId() { |
||||
return R.layout.activity_main; |
||||
} |
||||
|
||||
@Override protected void init(Bundle savedInstanceState) { |
||||
super.init(savedInstanceState); |
||||
setSupportActionBar(mBar); |
||||
mBar.setTitle("多线程多任务下载"); |
||||
} |
||||
|
||||
public void onClick(View view) { |
||||
switch (view.getId()) { |
||||
case R.id.single_task: |
||||
startActivity(new Intent(this, SingleTaskActivity.class)); |
||||
break; |
||||
case R.id.multi_task: |
||||
startActivity(new Intent(this, MultiTaskActivity.class)); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
@ -0,0 +1,94 @@ |
||||
package com.arialyy.simple.activity; |
||||
|
||||
import android.content.BroadcastReceiver; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.os.Bundle; |
||||
import android.support.v7.widget.LinearLayoutManager; |
||||
import android.support.v7.widget.RecyclerView; |
||||
|
||||
import android.support.v7.widget.Toolbar; |
||||
import com.arialyy.downloadutil.core.DownloadManager; |
||||
import com.arialyy.downloadutil.entity.DownloadEntity; |
||||
import com.arialyy.frame.util.show.L; |
||||
import com.arialyy.simple.R; |
||||
import com.arialyy.simple.adapter.DownloadAdapter; |
||||
import com.arialyy.simple.base.BaseActivity; |
||||
import com.arialyy.simple.databinding.ActivityMultiBinding; |
||||
import com.arialyy.simple.module.DownloadModule; |
||||
|
||||
import butterknife.Bind; |
||||
|
||||
/** |
||||
* Created by Lyy on 2016/9/27. |
||||
*/ |
||||
public class MultiTaskActivity extends BaseActivity<ActivityMultiBinding> { |
||||
@Bind(R.id.list) RecyclerView mList; |
||||
@Bind(R.id.toolbar) Toolbar mBar; |
||||
DownloadAdapter mAdapter; |
||||
|
||||
@Override protected int setLayoutId() { |
||||
return R.layout.activity_multi; |
||||
} |
||||
|
||||
@Override protected void init(Bundle savedInstanceState) { |
||||
super.init(savedInstanceState); |
||||
setSupportActionBar(mBar); |
||||
mBar.setTitle("多任务下载"); |
||||
mAdapter = new DownloadAdapter(this, getModule(DownloadModule.class).getDownloadData()); |
||||
mList.setLayoutManager(new LinearLayoutManager(this)); |
||||
mList.setAdapter(mAdapter); |
||||
} |
||||
|
||||
|
||||
private BroadcastReceiver mReceiver = new BroadcastReceiver() { |
||||
long len = 0; |
||||
|
||||
@Override public void onReceive(Context context, Intent intent) { |
||||
String action = intent.getAction(); |
||||
DownloadEntity entity = intent.getParcelableExtra(DownloadManager.ENTITY); |
||||
switch (action) { |
||||
case DownloadManager.ACTION_PRE: |
||||
len = entity.getFileSize(); |
||||
L.d(TAG, "download pre"); |
||||
break; |
||||
case DownloadManager.ACTION_START: |
||||
L.d(TAG, "download start"); |
||||
break; |
||||
case DownloadManager.ACTION_RESUME: |
||||
L.d(TAG, "download resume"); |
||||
long location = intent.getLongExtra(DownloadManager.CURRENT_LOCATION, 1); |
||||
mAdapter.updateState(entity); |
||||
break; |
||||
case DownloadManager.ACTION_RUNNING: |
||||
long current = intent.getLongExtra(DownloadManager.CURRENT_LOCATION, 0); |
||||
mAdapter.setProgress(entity.getDownloadUrl(), current); |
||||
break; |
||||
case DownloadManager.ACTION_STOP: |
||||
L.d(TAG, "download stop"); |
||||
mAdapter.updateState(entity); |
||||
break; |
||||
case DownloadManager.ACTION_COMPLETE: |
||||
L.d(TAG, "download complete"); |
||||
mAdapter.updateState(entity); |
||||
break; |
||||
case DownloadManager.ACTION_CANCEL: |
||||
L.d(TAG, "download cancel"); |
||||
break; |
||||
case DownloadManager.ACTION_FAIL: |
||||
L.d(TAG, "download fail"); |
||||
break; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
@Override protected void onResume() { |
||||
super.onResume(); |
||||
registerReceiver(mReceiver, getModule(DownloadModule.class).getDownloadFilter()); |
||||
} |
||||
|
||||
@Override protected void onDestroy() { |
||||
super.onDestroy(); |
||||
unregisterReceiver(mReceiver); |
||||
} |
||||
} |
@ -1,18 +1,32 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<layout |
||||
xmlns:android="http://schemas.android.com/apk/res/android"> |
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
> |
||||
|
||||
<LinearLayout |
||||
<LinearLayout |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:orientation="vertical" |
||||
> |
||||
|
||||
<include layout="@layout/layout_bar"/> |
||||
|
||||
<Button |
||||
android:id="@+id/single_task" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:orientation="vertical" |
||||
> |
||||
android:layout_height="wrap_content" |
||||
android:onClick="onClick" |
||||
android:text="单任务下载" |
||||
style="?buttonBarButtonStyle" |
||||
/> |
||||
|
||||
<android.support.v7.widget.RecyclerView |
||||
android:id="@+id/list" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
/> |
||||
<Button |
||||
android:id="@+id/multi_task" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:onClick="onClick" |
||||
android:text="多任务下载" |
||||
style="?buttonBarButtonStyle" |
||||
/> |
||||
|
||||
</LinearLayout> |
||||
</LinearLayout> |
||||
</layout> |
||||
|
@ -0,0 +1,21 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<layout |
||||
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
> |
||||
|
||||
<LinearLayout |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:orientation="vertical" |
||||
> |
||||
<include layout="@layout/layout_bar"/> |
||||
|
||||
<android.support.v7.widget.RecyclerView |
||||
android:id="@+id/list" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
/> |
||||
|
||||
</LinearLayout> |
||||
</layout> |
@ -0,0 +1,10 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<android.support.v7.widget.Toolbar |
||||
android:id="@+id/toolbar" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="?attr/actionBarSize" |
||||
android:background="?attr/colorPrimary" |
||||
app:popupTheme="@style/AppTheme.PopupOverlay" |
||||
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
/> |
Loading…
Reference in new issue