MainActivity 通過廣播接收 IntentService傳過來的資料
阿新 • • 發佈:2019-01-23
package com.example.administrator.bis; import android.app.IntentService; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyIntentService extends IntentService { private static final String ACTION_UPLOAD_IMG = "UPLOAD_IMAGE"; public static final String EXTRA_IMG_PATH = "IMG_PATH"; /* 這裡啟動服務 模擬圖片上傳 */ public static void startUploadImg(Context context, String path) { Intent intent = new Intent(context, MyIntentService.class); intent.setAction(ACTION_UPLOAD_IMG); intent.putExtra(EXTRA_IMG_PATH, path); context.startService(intent); } public MyIntentService() { super("UploadImgService"); } /* 處理資料 */ @Override protected void onHandleIntent(Intent intent) { if (intent != null) { final String action = intent.getAction(); if (ACTION_UPLOAD_IMG.equals(action)) { final String path = intent.getStringExtra(EXTRA_IMG_PATH)+MyIntentService.class.getName(); handleUploadImg(path); } } } private void handleUploadImg(String path) { Intent intent = new Intent(MainActivity.UPLOAD_RESULT); intent.putExtra(EXTRA_IMG_PATH, path); sendBroadcast(intent); } @Override public void onCreate() { super.onCreate(); Log.e("TAG","onCreate"); } @Override public void onDestroy() { super.onDestroy(); Log.e("TAG","onDestroy"); } }
package com.example.administrator.bis; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity{ public static final String UPLOAD_RESULT = "UPLOAD_RESULT"; private LinearLayout mLyTaskContainer; private BroadcastReceiver uploadImgReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction() == UPLOAD_RESULT) { String path = intent.getStringExtra(MyIntentService.EXTRA_IMG_PATH); handleResult(path); } } }; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv= (TextView) findViewById(R.id.tv); mLyTaskContainer = (LinearLayout) findViewById(R.id.id_ll_taskcontainer); registerReceiver(); } private void registerReceiver() { IntentFilter filter = new IntentFilter(); filter.addAction(UPLOAD_RESULT); registerReceiver(uploadImgReceiver, filter); } int i = 0; public void addTask(View view) { //模擬路徑 String path = "/sdcard/imgs/" + (++i) + ".png"; MyIntentService.startUploadImg(this, path); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(uploadImgReceiver); } private void handleResult(String path) { tv.setText(path); } }
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.administrator.bis.MainActivity"> <LinearLayout android:id="@+id/id_ll_taskcontainer" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="addTask" android:text="add Task"/> </LinearLayout> </RelativeLayout>