如何将数据从后台服务发送到活动?

时间:2017-09-18 05:54:15

标签: java android android-activity service background-service

我在互联网上尝试几乎代码,但我无法解决它。 我想将数据从服务中的特定方法发送到活动。 我使用intent(putExtra),但它没有进入活动类。

这是我的RecoBackgroundRangingService.java (我省略了不必要的代码)

private static final String TAG = "RecoBackgroundRangingService";
public static final String BROADCAST_ACTION = "com.example.hello ";
private final Handler handler = new Handler();
Intent intent;
int counter = 0;


@Override
public void onCreate() {
Log.i("BackRangingService", "onCreate()");
super.onCreate();

intent = new Intent(BROADCAST_ACTION);

Toast.makeText(getBaseContext(),"on create", Toast.LENGTH_SHORT).show();
}


@Override
public void didEnterRegion(RECOBeaconRegion region, Collection<RECOBeacon> beacons) {
/**
 * For the first run, this callback method will not be called.
 * Please check the state of the region using didDetermineStateForRegion() callback method.
 *

//Get the region and found beacon list in the entered region
    Log.i("BackRangingService", "didEnterRegion() - " + region.getUniqueIdentifier());
    this.popupNotification("Inside of " + region.getUniqueIdentifier());
//Write the code when the device is enter the region

     DisplayLoggingInfo();

     Toast.makeText(getBaseContext(),"did enter region", Toast.LENGTH_SHORT).show();

//this.startRangingWithRegion(region); //start ranging to get beacons inside of the region
//from now, stop ranging after 10 seconds if the device is not exited
}

private void DisplayLoggingInfo() {
//Log.d(TAG, "entered DisplayLoggingInfo");

//intent.putExtra("time", new Date().toLocaleString());
//intent.putExtra("counter", String.valueOf(++counter));

    intent.putExtra("status", 1);
    sendBroadcast(intent);

    Toast.makeText(getBaseContext(),"display logging", Toast.LENGTH_SHORT).show();
}

这是我的CheckActivity.java (当我收到数据时,我的目的是将数据存储到服务器。因此,我不需要使用布局。因此,为了检查数据,我使用吐司&#34;你好&#34;。但是吐司永远不会弹出我的手机...)

public class CheckActivity extends Activity {

    private static final String TAG = "CheckActivity";
    private Intent intent;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_check);

        intent = new Intent(this, RecoBackgroundRangingService.class);

        Toast.makeText(getBaseContext(), "check activity", Toast.LENGTH_SHORT).show();

    }

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        updateUI(intent);
    }
};


@Override
    public void onResume() {
        super.onResume();
        startService(intent);
        registerReceiver(broadcastReceiver, new IntentFilter(RecoBackgroundRangingService.BROADCAST_ACTION));
    }

    @Override
    public void onPause() {
        super.onPause();
        unregisterReceiver(broadcastReceiver);
        stopService(intent);
    }


    private void updateUI(Intent intent) {

        int status = intent.getIntExtra("status", -1);


        Toast.makeText(getBaseContext(), "hello", Toast.LENGTH_SHORT).show();
    }

}

0 个答案:

没有答案