取消订阅ROS主题 - Python

时间:2016-07-20 18:08:35

标签: python ros unsubscribe

所以我有一个Class,在它的init函数中,我订阅了一个摄像头,它的回调函数是在我的类中创建的。即:

<?xml version="1.0" encoding="utf-8"?>


<android.support.design.widget.CoordinatorLayout

    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbarLayout"
        android:layout_width="match_parent"
        android:layout_height="256dp"
        android:fitsSystemWindows="true"

        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsingToolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:collapsedTitleGravity="right|center"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleGravity="right|bottom"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"


            >

            <ImageView
                android:id="@+id/productImage_Single_Suggest"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                android:src="@drawable/loginbg_opt"
                app:layout_collapseMode="pin" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:elevation="7dp"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>


    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:src="@drawable/user"
        app:layout_anchor="@id/appbarLayout"
        app:layout_anchorGravity="bottom|right"

        />

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <RelativeLayout

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"

            android:layout_marginTop="50dp">

            <LinearLayout
                android:id="@+id/product_name_suggest_single"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/items"
                android:gravity="right"
                android:orientation="horizontal"
                android:padding="15dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:text="باقله تبریزی اعلا "
                    android:textAlignment="gravity"
                    android:textSize="18sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:gravity="right"
                    android:text="نام محصول:"
                    android:textAlignment="gravity"
                    android:textSize="20sp" />


            </LinearLayout>

            <LinearLayout
                android:id="@+id/product_code_suggest_single"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/product_name_suggest_single"
                android:layout_marginTop="10dp"
                android:background="@drawable/items"
                android:gravity="right"
                android:orientation="horizontal"
                android:padding="15dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:text="2122"
                    android:textAlignment="gravity"
                    android:textSize="18sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:gravity="right"
                    android:text="کد محصول"
                    android:textAlignment="gravity"
                    android:textSize="20sp" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/product_count_suggest_single"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/product_code_suggest_single"
                android:layout_marginTop="10dp"
                android:background="@drawable/items"
                android:gravity="right"
                android:orientation="horizontal"
                android:padding="15dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:text="1111"
                    android:textAlignment="gravity"
                    android:textSize="18sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:gravity="right"
                    android:text="موجودی انبار:"
                    android:textAlignment="gravity"
                    android:textSize="20sp" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/txtSuggestion"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/product_count_suggest_single"
                android:layout_marginTop="10dp"
                android:background="@drawable/items"
                android:gravity="right"
                android:orientation="vertical"
                android:padding="15dp">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:gravity="right"
                    android:text="پیشنهاد"
                    android:textAlignment="gravity"
                    android:textSize="20sp" />

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/roundcorner"
                    android:padding="10dp"
                    android:text=" ژنرال ارتش ترکیه روز چهارشنبه ۳۰ تیرماه رسما به تلاش برای انجام کودتا در این کشور متهم شدند. همزمان، ۲۶۲ قاضی و دادستان دادگاه‌های نظامی و ۹۰۰ پلیس در آنکارا پایتخت ترکیه نیز از سمت خود تعلیق شده‌اند.

شش هزار و ۵۰۰ نفر دیگر از کارکنان وزارت آموزش ملی این کشور نیز از سمت‌های خود تعلیق شده‌اند. این اقدام یک روز پس از اخراج بیش از ۱۵ هزار معلم از سوی این وزارتخانه صورت می‌گیرد.

دولت ترکیه روز سه‌شنبه همچنین مجوز تدریس ۲۱ هزار معلم شاغل در بخش خصوصی را لغو کرده بود.

با احتساب این ارقام، تاکنون بیش از ۶۰ هزار قاضی، معلم، سرباز، پلیس و کارمند دولت از کار خود تعلیق شده‌اند." />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/txtreplayToSuggestion"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txtSuggestion"
                android:layout_marginTop="10dp"
                android:background="@drawable/items"
                android:gravity="right"
                android:orientation="vertical"
                android:padding="15dp">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:gravity="right"
                    android:text="پاسخ به پیشنهاد"
                    android:textAlignment="gravity"
                    android:textSize="20sp" />

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/roundcorner"
                    android:padding="10dp"
                    android:text=" ژنرال ارتش ترکیه روز چهارشنبه ۳۰ تیرماه رسما به تلاش برای انجام کودتا در این کشور متهم شدند. همزمان، ۲۶۲ قاضی و دادستان دادگاه‌های نظامی و ۹۰۰ پلیس در آنکارا پایتخت ترکیه نیز از سمت خود تعلیق شده‌اند.

شش هزار و ۵۰۰ نفر دیگر از کارکنان وزارت آموزش ملی این کشور نیز از سمت‌های خود تعلیق شده‌اند. این اقدام یک روز پس از اخراج بیش از ۱۵ هزار معلم از سوی این وزارتخانه صورت می‌گیرد.

دولت ترکیه روز سه‌شنبه همچنین مجوز تدریس ۲۱ هزار معلم شاغل در بخش خصوصی را لغو کرده بود.

با احتساب این ارقام، تاکنون بیش از ۶۰ هزار قاضی، معلم، سرباز، پلیس و کارمند دولت از کار خود تعلیق شده‌اند." />
            </LinearLayout>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txtreplayToSuggestion"
                android:text="ارسال ایمیل" />
        </RelativeLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

因此,出于我的项目的目的,我需要创建另一个类,除了做其他一些东西之外,还要取消订阅它当前订阅的所有主题。但我不知道如何使用列出的{@ 3}}

的取消订阅者功能

任何人都可以帮助我,我将如何使用该功能?

1 个答案:

答案 0 :(得分:2)

我并不完全明白你必须做什么,但是当你订阅一个主题时,你可以这样写:

sub = rospy.subscriber("/cameras/left_hand_camera/image",Image,self.callback_viewer)

然后当您必须取消订阅时,您必须这样做:

sub.unregister()

希望这能回答你的问题。